From d1f802de48aab2b5edc52d34c6d47edebdbd23fb Mon Sep 17 00:00:00 2001 From: "cl349@arcadians.cl.cam.ac.uk" Date: Fri, 19 Nov 2004 00:40:52 +0000 Subject: [PATCH] bitkeeper revision 1.1159.179.4 (419d4114nkyg4h9bvzeg9cCGGAkKLQ) Update Linux 2.6 port to 2.6.10-rc2. --- .rootkeys | 251 ++-- .../arch/xen/Kconfig | 0 .../arch/xen/Kconfig.drivers | 0 .../arch/xen/Makefile | 0 .../arch/xen/boot/Makefile | 0 .../arch/xen/configs/xen0_defconfig | 0 .../arch/xen/configs/xenU_defconfig | 0 .../arch/xen/i386/Kconfig | 40 +- .../arch/xen/i386/Makefile | 4 +- .../arch/xen/i386/kernel/Makefile | 7 +- .../arch/xen/i386/kernel/cpu/Makefile | 2 +- .../arch/xen/i386/kernel/cpu/common.c | 0 .../arch/xen/i386/kernel/entry.S | 129 +- .../arch/xen/i386/kernel/head.S | 0 .../arch/xen/i386/kernel/i386_ksyms.c | 7 +- .../arch/xen/i386/kernel/ioport.c | 0 .../arch/xen/i386/kernel/irq.c | 256 ++++ .../arch/xen/i386/kernel/ldt.c | 0 .../arch/xen/i386/kernel/pci-dma.c | 0 .../arch/xen/i386/kernel/process.c | 14 +- .../arch/xen/i386/kernel/setup.c | 0 .../arch/xen/i386/kernel/signal.c | 5 +- .../arch/xen/i386/kernel/sysenter.c | 0 .../arch/xen/i386/kernel/time.c | 43 +- .../arch/xen/i386/kernel/timers/Makefile | 0 .../arch/xen/i386/kernel/timers/timer_tsc.c | 16 +- .../arch/xen/i386/kernel/traps.c | 74 +- .../arch/xen/i386/kernel/vmlinux.lds.S | 0 .../arch/xen/i386/kernel/vsyscall.S | 0 .../arch/xen/i386/kernel/vsyscall.lds | 0 .../arch/xen/i386/mm/Makefile | 0 .../arch/xen/i386/mm/fault.c | 4 +- .../arch/xen/i386/mm/highmem.c | 0 .../arch/xen/i386/mm/hypervisor.c | 0 .../arch/xen/i386/mm/init.c | 3 +- .../arch/xen/i386/mm/ioremap.c | 0 .../arch/xen/i386/mm/pageattr.c | 1 - .../arch/xen/i386/mm/pgtable.c | 8 +- .../arch/xen/i386/pci/Makefile | 0 .../arch/xen/i386/pci/direct.c | 0 .../arch/xen/i386/pci/irq.c | 16 +- .../arch/xen/kernel/Makefile | 0 .../arch/xen/kernel/ctrl_if.c | 0 .../arch/xen/kernel/empty.c | 0 .../arch/xen/kernel/evtchn.c | 2 +- .../arch/xen/kernel/fixup.c | 0 .../arch/xen/kernel/gnttab.c | 0 .../arch/xen/kernel/reboot.c | 0 .../arch/xen/kernel/skbuff.c | 0 .../arch/xen/kernel/xen_proc.c | 0 .../drivers/Makefile | 5 +- .../drivers/char/mem.c | 25 +- .../drivers/char/tty_io.c | 97 +- .../drivers/xen/Makefile | 0 .../drivers/xen/balloon/Makefile | 0 .../drivers/xen/balloon/balloon.c | 0 .../drivers/xen/blkback/Makefile | 0 .../drivers/xen/blkback/blkback.c | 0 .../drivers/xen/blkback/common.h | 0 .../drivers/xen/blkback/control.c | 0 .../drivers/xen/blkback/interface.c | 0 .../drivers/xen/blkback/vbd.c | 0 .../drivers/xen/blkfront/Kconfig | 0 .../drivers/xen/blkfront/Makefile | 0 .../drivers/xen/blkfront/blkfront.c | 0 .../drivers/xen/blkfront/block.h | 0 .../drivers/xen/blkfront/vbd.c | 4 +- .../drivers/xen/console/Makefile | 0 .../drivers/xen/console/console.c | 31 +- .../drivers/xen/evtchn/Makefile | 0 .../drivers/xen/evtchn/evtchn.c | 4 - .../drivers/xen/netback/Makefile | 0 .../drivers/xen/netback/common.h | 0 .../drivers/xen/netback/control.c | 0 .../drivers/xen/netback/interface.c | 0 .../drivers/xen/netback/netback.c | 0 .../drivers/xen/netfront/Kconfig | 0 .../drivers/xen/netfront/Makefile | 0 .../drivers/xen/netfront/netfront.c | 0 .../drivers/xen/privcmd/Makefile | 0 .../drivers/xen/privcmd/privcmd.c | 0 .../include/asm-generic/pgtable.h | 0 .../include/asm-xen/asm-i386/desc.h | 0 .../include/asm-xen/asm-i386/dma-mapping.h | 0 .../include/asm-xen/asm-i386/fixmap.h | 0 .../include/asm-xen/asm-i386/floppy.h | 0 .../include/asm-xen/asm-i386/highmem.h | 0 .../include/asm-xen/asm-i386/io.h | 2 + .../asm-xen/asm-i386/mach-xen/irq_vectors.h | 0 .../asm-i386/mach-xen/setup_arch_post.h | 0 .../asm-i386/mach-xen/setup_arch_pre.h | 0 .../include/asm-xen/asm-i386/mmu_context.h | 0 .../include/asm-xen/asm-i386/msr.h | 0 .../include/asm-xen/asm-i386/page.h | 4 +- .../include/asm-xen/asm-i386/param.h | 0 .../include/asm-xen/asm-i386/pci.h | 0 .../include/asm-xen/asm-i386/pgalloc.h | 0 .../asm-xen/asm-i386/pgtable-2level-defs.h | 0 .../include/asm-xen/asm-i386/pgtable-2level.h | 0 .../include/asm-xen/asm-i386/pgtable.h | 0 .../include/asm-xen/asm-i386/processor.h | 3 + .../include/asm-xen/asm-i386/ptrace.h | 0 .../include/asm-xen/asm-i386/segment.h | 0 .../include/asm-xen/asm-i386/setup.h | 0 .../include/asm-xen/asm-i386/synch_bitops.h | 0 .../include/asm-xen/asm-i386/system.h | 4 +- .../include/asm-xen/asm-i386/tlbflush.h | 0 .../include/asm-xen/asm-i386/vga.h | 0 .../include/asm-xen/asm-i386/xor.h | 0 .../include/asm-xen/ctrl_if.h | 0 .../include/asm-xen/evtchn.h | 0 .../include/asm-xen/foreign_page.h | 0 .../include/asm-xen/gnttab.h | 0 .../include/asm-xen/hypervisor.h | 0 .../include/asm-xen/linux-public/privcmd.h | 0 .../include/asm-xen/linux-public/suspend.h | 0 .../include/asm-xen/multicall.h | 0 .../include/asm-xen/queues.h | 0 .../include/asm-xen/xen_proc.h | 0 .../include/linux/gfp.h | 0 .../include/linux/skbuff.h | 0 .../mkbuildtree | 0 .../mm/memory.c | 62 +- .../mm/page_alloc.c | 17 +- .../net/core/skbuff.c | 6 +- .../net/ipv4/raw.c | 2 +- .../arch/xen/i386/kernel/irq.c | 1161 ----------------- linux-2.6.9-xen-sparse/include/linux/bio.h | 328 ----- 128 files changed, 745 insertions(+), 1892 deletions(-) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/Kconfig (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/Kconfig.drivers (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/boot/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/configs/xen0_defconfig (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/configs/xenU_defconfig (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/Kconfig (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/Makefile (96%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/Makefile (95%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/cpu/Makefile (94%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/cpu/common.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/entry.S (92%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/head.S (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/i386_ksyms.c (95%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/ioport.c (100%) create mode 100644 linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/ldt.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/pci-dma.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/process.c (98%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/setup.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/signal.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/sysenter.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/time.c (95%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/timers/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/timers/timer_tsc.c (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/traps.c (94%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/vmlinux.lds.S (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/vsyscall.S (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/kernel/vsyscall.lds (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/fault.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/highmem.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/hypervisor.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/init.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/ioremap.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/pageattr.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/mm/pgtable.c (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/pci/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/pci/direct.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/i386/pci/irq.c (93%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/ctrl_if.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/empty.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/evtchn.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/fixup.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/gnttab.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/reboot.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/skbuff.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/arch/xen/kernel/xen_proc.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/Makefile (93%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/char/mem.c (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/char/tty_io.c (98%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/balloon/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/balloon/balloon.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/blkback.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/common.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/control.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/interface.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkback/vbd.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkfront/Kconfig (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkfront/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkfront/blkfront.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkfront/block.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/blkfront/vbd.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/console/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/console/console.c (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/evtchn/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/evtchn/evtchn.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netback/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netback/common.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netback/control.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netback/interface.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netback/netback.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netfront/Kconfig (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netfront/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/netfront/netfront.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/privcmd/Makefile (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/drivers/xen/privcmd/privcmd.c (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-generic/pgtable.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/desc.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/dma-mapping.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/fixmap.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/floppy.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/highmem.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/io.h (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/mach-xen/irq_vectors.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/mmu_context.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/msr.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/page.h (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/param.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/pci.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/pgalloc.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/pgtable-2level-defs.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/pgtable-2level.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/pgtable.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/processor.h (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/ptrace.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/segment.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/setup.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/synch_bitops.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/system.h (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/tlbflush.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/vga.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/asm-i386/xor.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/ctrl_if.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/evtchn.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/foreign_page.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/gnttab.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/hypervisor.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/linux-public/privcmd.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/linux-public/suspend.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/multicall.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/queues.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/asm-xen/xen_proc.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/linux/gfp.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/include/linux/skbuff.h (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/mkbuildtree (100%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/mm/memory.c (97%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/mm/page_alloc.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/net/core/skbuff.c (99%) rename {linux-2.6.9-xen-sparse => linux-2.6.10-rc2-xen-sparse}/net/ipv4/raw.c (99%) delete mode 100644 linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c delete mode 100644 linux-2.6.9-xen-sparse/include/linux/bio.h diff --git a/.rootkeys b/.rootkeys index 33c859e4c4..d0ea0d63d6 100644 --- a/.rootkeys +++ b/.rootkeys @@ -127,132 +127,131 @@ 3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.27-xen-sparse/mm/swapfile.c 41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.27-xen-sparse/mm/vmalloc.c 41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.27-xen-sparse/net/core/skbuff.c -40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.9-xen-sparse/arch/xen/Kconfig -40f56237utH41NPukqHksuNf29IC9A linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers -40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.9-xen-sparse/arch/xen/Makefile -40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.9-xen-sparse/arch/xen/boot/Makefile -40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.9-xen-sparse/arch/xen/configs/xen0_defconfig -40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.9-xen-sparse/arch/xen/configs/xenU_defconfig -40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig -40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.9-xen-sparse/arch/xen/i386/Makefile -40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile -40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile -40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/common.c -40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S -40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.9-xen-sparse/arch/xen/i386/kernel/head.S -40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c -40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ioport.c -40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c -40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ldt.c -4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/pci-dma.c -40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c -40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/setup.c -40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c -40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.9-xen-sparse/arch/xen/i386/kernel/sysenter.c -40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c -40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/Makefile -40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c -40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c -40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S -40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.S -40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.lds -40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.9-xen-sparse/arch/xen/i386/mm/Makefile -40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c -4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.9-xen-sparse/arch/xen/i386/mm/highmem.c -40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c -40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c -41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c -413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c -40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c -4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.9-xen-sparse/arch/xen/i386/pci/Makefile -4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.9-xen-sparse/arch/xen/i386/pci/direct.c -4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c -40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.9-xen-sparse/arch/xen/kernel/Makefile -40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.9-xen-sparse/arch/xen/kernel/ctrl_if.c -40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.9-xen-sparse/arch/xen/kernel/empty.c -40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c -4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.9-xen-sparse/arch/xen/kernel/fixup.c -412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.9-xen-sparse/arch/xen/kernel/gnttab.c -40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c -414c113396tK1HTVeUalm3u-1DF16g linux-2.6.9-xen-sparse/arch/xen/kernel/skbuff.c -3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.9-xen-sparse/arch/xen/kernel/xen_proc.c -41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.9-xen-sparse/drivers/Makefile -4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.9-xen-sparse/drivers/char/mem.c -4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.9-xen-sparse/drivers/char/tty_io.c -40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.9-xen-sparse/drivers/xen/Makefile -41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.9-xen-sparse/drivers/xen/balloon/Makefile -3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.9-xen-sparse/drivers/xen/balloon/balloon.c -410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.9-xen-sparse/drivers/xen/blkback/Makefile -4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.9-xen-sparse/drivers/xen/blkback/blkback.c -4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.9-xen-sparse/drivers/xen/blkback/common.h -4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.9-xen-sparse/drivers/xen/blkback/control.c -4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.9-xen-sparse/drivers/xen/blkback/interface.c -4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.9-xen-sparse/drivers/xen/blkback/vbd.c -40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.9-xen-sparse/drivers/xen/blkfront/Kconfig -40f562395atl9x4suKGhPkjqLOXESg linux-2.6.9-xen-sparse/drivers/xen/blkfront/Makefile -40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.9-xen-sparse/drivers/xen/blkfront/blkfront.c -40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.9-xen-sparse/drivers/xen/blkfront/block.h -40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c -40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.9-xen-sparse/drivers/xen/console/Makefile -3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.9-xen-sparse/drivers/xen/console/console.c -40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.9-xen-sparse/drivers/xen/evtchn/Makefile -40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c -410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.9-xen-sparse/drivers/xen/netback/Makefile -4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.9-xen-sparse/drivers/xen/netback/common.h -4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.9-xen-sparse/drivers/xen/netback/control.c -4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c -4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c -40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.9-xen-sparse/drivers/xen/netfront/Kconfig -40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.9-xen-sparse/drivers/xen/netfront/Makefile -405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.9-xen-sparse/drivers/xen/netfront/netfront.c -4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.9-xen-sparse/drivers/xen/privcmd/Makefile -3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.9-xen-sparse/drivers/xen/privcmd/privcmd.c -412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.9-xen-sparse/include/asm-generic/pgtable.h -40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/desc.h -4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h -40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h -41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/floppy.h -4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h -40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h -40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h -40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h -40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h -4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mmu_context.h -40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/msr.h -40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h -40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/param.h -41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pci.h -40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgalloc.h -412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h -40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h -40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable.h -40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h -412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/ptrace.h -40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/segment.h -40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/setup.h -40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h -40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h -40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/tlbflush.h -41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/vga.h -40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/xor.h -40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.9-xen-sparse/include/asm-xen/ctrl_if.h -40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.9-xen-sparse/include/asm-xen/evtchn.h -419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.9-xen-sparse/include/asm-xen/foreign_page.h -412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.9-xen-sparse/include/asm-xen/gnttab.h -40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h -3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.9-xen-sparse/include/asm-xen/linux-public/privcmd.h -3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.9-xen-sparse/include/asm-xen/linux-public/suspend.h -40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.9-xen-sparse/include/asm-xen/multicall.h -4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.9-xen-sparse/include/asm-xen/queues.h -3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.9-xen-sparse/include/asm-xen/xen_proc.h -4124d8c4aocX7A-jIbuGraWN84pxGQ linux-2.6.9-xen-sparse/include/linux/bio.h -419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.9-xen-sparse/include/linux/gfp.h -4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.9-xen-sparse/include/linux/skbuff.h -40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.9-xen-sparse/mkbuildtree -412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.9-xen-sparse/mm/memory.c -410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.9-xen-sparse/mm/page_alloc.c -41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.9-xen-sparse/net/core/skbuff.c -4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.9-xen-sparse/net/ipv4/raw.c +40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig +40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers +40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile +40f56237JTc60m1FRlUxkUaGSQKrNw linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile +40f56237hRxbacU_3PdoAl6DjZ3Jnw linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig +40f56237wubfjJKlfIzZlI3ZM2VgGA linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig +40f56237Mta0yHNaMS_qtM2rge0qYA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig +40f56238u2CJdXNpjsZgHBxeVyY-2g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile +40f56238eczveJ86k_4hNxCLRQIF-g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile +40f56238rXVTJQKbBuXXLH52qEArcg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile +40f562385s4lr6Zg92gExe7UQ4A76Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c +40f56238XDtHSijkAFlbv1PT8Bhw_Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S +40f56238bnvciAuyzAiMkdzGErYt1A linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S +40f58a0d31M2EkuPbG94ns_nOi0PVA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c +40faa751_zbZlAmLyQgCXdYekVFdWA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c +40f562382aC3_Gt4RG-4ZsfvDRUg3Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c +40f56238ue3YRsK52HG7iccNzP1AwQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c +4107adf1cNtsuOxOB4T6paAoY2R2PA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c +40f56238a8iOVDEoostsbun_sy2i4g linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c +40f56238YQIJoYG2ehDGEcdTgLmGbg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c +40f56238nWMQg7CKbyTy0KJNvCzbtg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c +40f56238UL9uv78ODDzMwLL9yryeFw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/sysenter.c +40f56238qVGkpO_ycnQA8k03kQzAgA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c +40f56238NzTgeO63RGoxHrW5NQeO3Q linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/Makefile +40f56238BMqG5PuSHufpjbvp_helBw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c +40f562389xNa78YBZciUibQjyRU_Lg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c +40f56238qASEI_IOhCKWNuwFKNZrKQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S +40f56238JypKAUG01ZojFwH7qnZ5uA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.S +40f56238wi6AdNQjm0RT57bSkwb6hg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.lds +40f56238a3w6-byOzexIlMgni76Lcg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/Makefile +40f56238ILx8xlbywNbzTdv5Zr4xXQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c +4118cc35CbY8rfGVspF5O-7EkXBEAA linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/highmem.c +40f562383SKvDStdtrvzr5fyCbW4rw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/hypervisor.c +40f56239xcNylAxuGsQHwi1AyMLV8w linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c +41062ab7CjxC1UBaFhOMWWdhHkIUyg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/ioremap.c +413b5ab8LIowAnQrEmaOJSdmqm96jQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c +40f5623906UYHv1rsVUeRc0tFT0dWw linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c +4107adf12ndy94MidCaivDibJ3pPAg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/Makefile +4107adf1WcCgkhsdLTRGX52cOG1vJg linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/direct.c +4107adf1s5u6249DNPUViX1YNagbUQ linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c +40f56239zOksGg_H4XD4ye6iZNtoZA linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/Makefile +40f56239bvOjuuuViZ0XMlNiREFC0A linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/ctrl_if.c +40f56239pYRq5yshPTkv3ujXKc8K6g linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/empty.c +40f56238xFQe9T7M_U_FItM-bZIpLw linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c +4110f478aeQWllIN7J4kouAHiAqrPw linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/fixup.c +412dfae9eA3_6e6bCGUtg1mj8b56fQ linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/gnttab.c +40f562392LBhwmOxVPsYdkYXMxI_ZQ linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/reboot.c +414c113396tK1HTVeUalm3u-1DF16g linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/skbuff.c +3f68905c5eiA-lBMQSvXLMWS1ikDEA linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/xen_proc.c +41261688yS8eAyy-7kzG4KBs0xbYCA linux-2.6.10-rc2-xen-sparse/drivers/Makefile +4108f5c1WfTIrs0HZFeV39sttekCTw linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c +4111308bZAIzwf_Kzu6x1TZYZ3E0_Q linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c +40f56239Dp_vMTgz8TEbvo1hjHGc3w linux-2.6.10-rc2-xen-sparse/drivers/xen/Makefile +41768fbcncpBQf8s2l2-CwoSNIZ9uA linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/Makefile +3e6377f8i5e9eGz7Pw6fQuhuTQ7DQg linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/balloon.c +410d0893otFGghmv4dUXDUBBdY5aIA linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/Makefile +4087cf0d1XgMkooTZAiJS6NrcpLQNQ linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/blkback.c +4087cf0dZadZ8r6CEt4fNN350Yle3A linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/common.h +4087cf0dxlh29iw0w-9rxOCEGCjPcw linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/control.c +4087cf0dbuoH20fMjNZjcgrRK-1msQ linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/interface.c +4087cf0dk97tacDzxfByWV7JifUYqA linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/vbd.c +40f56239Sfle6wGv5FS0wjS_HI150A linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Kconfig +40f562395atl9x4suKGhPkjqLOXESg linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Makefile +40f56239-JNIaTzlviVJohVdoYOUpw linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/blkfront.c +40f56239y9naBTXe40Pi2J_z3p-d1g linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/block.h +40f56239BVfPsXBiWQitXgDRtOsiqg linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c +40f56239fsLjvtD8YBRAWphps4FDjg linux-2.6.10-rc2-xen-sparse/drivers/xen/console/Makefile +3e5a4e651TH-SXHoufurnWjgl5bfOA linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c +40f56239KYxO0YabhPzCTeUuln-lnA linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/Makefile +40f56239DoibTX6R-ZYd3QTXAB8_TA linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c +410a9817HEVJvred5Oy_uKH3HFJC5Q linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/Makefile +4097ba831lpGeLlPg-bfV8XarVVuoQ linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/common.h +4097ba83wvv8yi5P5xugCUBAdb6O-A linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/control.c +4097ba83byY5bTSugJGZ1exTxIcMKw linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/interface.c +4087cf0dGmSbFhFZyIZBJzvqxY-qBw linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/netback.c +40f56239lrg_Ob0BJ8WBFS1zeg2CYw linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Kconfig +40f56239Wd4k_ycG_mFsSO1r5xKdtQ linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Makefile +405853f6nbeazrNyEWNHBuoSg2PiPA linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/netfront.c +4108f5c1ppFXVpQzCOAZ6xXYubsjKA linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/Makefile +3e5a4e65IUfzzMu2kZFlGEB8-rpTaA linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/privcmd.c +412f47e4RKD-R5IS5gEXvcT8L4v8gA linux-2.6.10-rc2-xen-sparse/include/asm-generic/pgtable.h +40f56239YAjS52QG2FIAQpHDZAdGHg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/desc.h +4107adf1E5O4ztGHNGMzCCNhcvqNow linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h +40f5623akIoBsQ3KxSB2kufkbgONXQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/fixmap.h +41979925z1MsKU1SfuuheM1IFDQ_bA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/floppy.h +4118b6a418gnL6AZsTdglC92YGqYTg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/highmem.h +40f5623aJVXQwpJMOLE99XgvGsfQ8Q linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h +40f5623aKXkBBxgpLx2NcvkncQ1Yyw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h +40f5623aDMCsWOFO0jktZ4e8sjwvEg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h +40f5623arsFXkGdPvIqvFi3yFXGR0Q linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h +4120f807GCO0uqsLqdZj9csxR1Wthw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mmu_context.h +40f5623aFTyFTR-vdiA-KaGxk5JOKQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/msr.h +40f5623adgjZq9nAgCt0IXdWl7udSA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h +40f5623a54NuG-7qHihGYmw4wWQnMA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/param.h +41137cc1kkvg0cg7uxddcEfjL7L67w linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pci.h +40f5623atCokYc2uCysSJ8jFO8TEsw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgalloc.h +412e01beTwiaC8sYY4XJP8PxLST5CA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h +40f5623aEToIXouJgO-ao5d5pcEt1w linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h +40f5623aCCXRPlGpNthVXstGz9ZV3A linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable.h +40f5623aPCkQQfPtJSooGdhcatrvnQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h +412ea0afQL2CAI-f522TbLjLPMibPQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/ptrace.h +40f5623bzLvxr7WoJIxVf2OH4rCBJg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/segment.h +40f5623bG_LzgG6-qwk292nTc5Wabw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/setup.h +40f5623bgzm_9vwxpzJswlAxg298Gg linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h +40f5623bVdKP7Dt7qm8twu3NcnGNbA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h +40f5623bc8LKPRO09wY5dGDnY_YCpw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/tlbflush.h +41062ab7uFxnCq-KtPeAm-aV8CicgA linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/vga.h +40f5623bxUbeGjkRrjDguCy_Gm8RLw linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/xor.h +40f5623bYNP7tHE2zX6YQxp9Zq2utQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/ctrl_if.h +40f5623b3Eqs8pAc5WpPX8_jTzV2qw linux-2.6.10-rc2-xen-sparse/include/asm-xen/evtchn.h +419b4e9367PjTEvdjwavWN12BeBBXg linux-2.6.10-rc2-xen-sparse/include/asm-xen/foreign_page.h +412dfaeazclyNDM0cpnp60Yo4xulpQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/gnttab.h +40f5623aGPlsm0u1LTO-NVZ6AGzNRQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/hypervisor.h +3f108af1ylCIm82H052FVTfXACBHrw linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/privcmd.h +3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/suspend.h +40f5623cndVUFlkxpf7Lfx7xu8madQ linux-2.6.10-rc2-xen-sparse/include/asm-xen/multicall.h +4122466356eIBnC9ot44WSVVIFyhQA linux-2.6.10-rc2-xen-sparse/include/asm-xen/queues.h +3f689063BoW-HWV3auUJ-OqXfcGArw linux-2.6.10-rc2-xen-sparse/include/asm-xen/xen_proc.h +419b4e93z2S0gR17XTy8wg09JEwAhg linux-2.6.10-rc2-xen-sparse/include/linux/gfp.h +4124f66f4NaKNa0xPiGGykn9QaZk3w linux-2.6.10-rc2-xen-sparse/include/linux/skbuff.h +40f56a0ddHCSs3501MY4hRf22tctOw linux-2.6.10-rc2-xen-sparse/mkbuildtree +412f46c0LJuKAgSPGoC0Z1DEkLfuLA linux-2.6.10-rc2-xen-sparse/mm/memory.c +410a94a4KT6I6X0LVc7djB39tRDp4g linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c +41505c572m-s9ATiO1LiD1GPznTTIg linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c +4149ec79wMpIHdvbntxqVGLRZZjPxw linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c 413cb1e4zst25MDYjg63Y-NGC5_pLg netbsd-2.0-xen-sparse/Makefile 413cb1e5c_Mkxf_X0zimEhTKI_l4DA netbsd-2.0-xen-sparse/mkbuildtree 413cb1e5kY_Zil7-b0kI6hvCIxBEYg netbsd-2.0-xen-sparse/nbconfig-xen diff --git a/linux-2.6.9-xen-sparse/arch/xen/Kconfig b/linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/Kconfig rename to linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig diff --git a/linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers b/linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/Kconfig.drivers rename to linux-2.6.10-rc2-xen-sparse/arch/xen/Kconfig.drivers diff --git a/linux-2.6.9-xen-sparse/arch/xen/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/boot/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/boot/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/boot/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/configs/xen0_defconfig b/linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/configs/xen0_defconfig rename to linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xen0_defconfig diff --git a/linux-2.6.9-xen-sparse/arch/xen/configs/xenU_defconfig b/linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/configs/xenU_defconfig rename to linux-2.6.10-rc2-xen-sparse/arch/xen/configs/xenU_defconfig diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig similarity index 97% rename from linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig index 6e22f7ca21..72d47a184c 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/Kconfig +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Kconfig @@ -24,6 +24,9 @@ config GENERIC_ISA_DMA bool default y +config GENERIC_IOMAP + bool + default y choice prompt "Processor family" @@ -58,6 +61,7 @@ choice # - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D). # - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird). # - "Crusoe" for the Transmeta Crusoe series. +# - "Efficeon" for the Transmeta Efficeon series. # - "Winchip-C6" for original IDT Winchip. # - "Winchip-2" for IDT Winchip 2. # - "Winchip-2A" for IDT Winchips with 3dNow! capabilities. @@ -160,6 +164,11 @@ config MCRUSOE like a 586 with TSC, and sets some GCC optimization flags (like a Pentium Pro with no alignment requirements). +config MEFFICEON + bool "Efficeon" + help + Select this for a Transmeta Efficeon processor. + #config MWINCHIPC6 # bool "Winchip-C6" # help @@ -204,7 +213,7 @@ config MVIAC3_2 endchoice config X86_GENERIC - bool "Generic x86 support" + bool "Generic x86 support" help Instead of just including optimizations for the selected x86 variant (e.g. PII, Crusoe or Athlon), include some more @@ -231,7 +240,7 @@ config X86_L1_CACHE_SHIFT int default "7" if MPENTIUM4 || X86_GENERIC default "4" if X86_ELAN || M486 || M386 - default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 + default "5" if MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 default "6" if MK7 || MK8 || MPENTIUMM config RWSEM_GENERIC_SPINLOCK @@ -281,17 +290,17 @@ config X86_ALIGNMENT_16 config X86_GOOD_APIC bool - depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 + depends on MK7 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || MK8 || MEFFICEON default y config X86_INTEL_USERCOPY bool - depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 + depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON default y config X86_USE_PPRO_CHECKSUM bool - depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 + depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MEFFICEON default y config X86_USE_3DNOW @@ -391,7 +400,7 @@ config PREEMPT #config X86_TSC # bool -# depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ +# depends on (MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2) && !X86_NUMAQ # default y #config X86_MCE @@ -763,7 +772,7 @@ config SCx200 tristate "NatSemi SCx200 support" depends on !X86_VOYAGER help - This provides basic support for the National Semiconductor SCx200 + This provides basic support for the National Semiconductor SCx200 processor. Right now this is just a driver for the GPIO pins. If you don't know what to do here, say N. @@ -903,6 +912,17 @@ config X86_MPPARSE endmenu +# +# Use the generic interrupt handling code in kernel/irq/: +# +config GENERIC_HARDIRQS + bool + default y + +config GENERIC_IRQ_PROBE + bool + default y + config X86_SMP bool depends on SMP && !X86_VOYAGER @@ -923,12 +943,6 @@ config X86_TRAMPOLINE depends on X86_SMP || (X86_VOYAGER && SMP) default y -# std_resources is overridden for pc9800, but that's not -# a currently selectable arch choice -config X86_STD_RESOURCES - bool - default y - config PC bool depends on X86 && !EMBEDDED diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile similarity index 96% rename from linux-2.6.9-xen-sparse/arch/xen/i386/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile index 42540778da..51ab26cb32 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/Makefile +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/Makefile @@ -26,8 +26,7 @@ CFLAGS += -pipe -msoft-float # prevent gcc from keeping the stack 16 byte aligned CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,) -align := $(subst -functions=0,,$(call cc-option,-falign-functions=0,-malign-functions=0)) - +align := $(cc-option-align) cflags-$(CONFIG_M386) += -march=i386 cflags-$(CONFIG_M486) += -march=i486 cflags-$(CONFIG_M586) += -march=i586 @@ -44,6 +43,7 @@ cflags-$(CONFIG_MK6) += -march=k6 cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4) cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)) cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 +cflags-$(CONFIG_MEFFICEON) += $(call cc-option,-march=pentium3,-march=i686) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0 cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586) cflags-$(CONFIG_MWINCHIP2) += $(call cc-option,-march=winchip2,-march=i586) cflags-$(CONFIG_MWINCHIP3D) += $(call cc-option,-march=winchip2,-march=i586) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile similarity index 95% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile index 3124b25b99..d8bfbd8e47 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/Makefile +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/Makefile @@ -8,13 +8,14 @@ CFLAGS += -Iarch/$(XENARCH)/kernel extra-y := head.o init_task.o vmlinux.lds -obj-y := traps.o irq.o ldt.o setup.o entry.o time.o pci-dma.o process.o \ - ioport.o signal.o i386_ksyms.o +obj-y := process.o signal.o entry.o traps.o irq.o \ + time.o ioport.o ldt.o setup.o \ + pci-dma.o i386_ksyms.o c-obj-y := semaphore.o vm86.o \ ptrace.o sys_i386.o \ i387.o dmi_scan.o bootflag.o \ - doublefault.o + doublefault.o quirks.o s-obj-y := obj-y += cpu/ diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile similarity index 94% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile index 478e023a6d..37bceb803d 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/Makefile +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/Makefile @@ -11,7 +11,7 @@ c-obj-y += amd.o c-obj-y += cyrix.o c-obj-y += centaur.o c-obj-y += transmeta.o -c-obj-y += intel.o +c-obj-y += intel.o intel_cacheinfo.o c-obj-y += rise.o c-obj-y += nexgen.o c-obj-y += umc.o diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/common.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/cpu/common.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/cpu/common.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S similarity index 92% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S index f8f0b8c4fa..0fa17942d3 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/entry.S +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/entry.S @@ -88,7 +88,7 @@ VM_MASK = 0x00020000 XEN_BLOCK_EVENTS(%esi) #else #define preempt_stop -#define resume_kernel restore_all +#define resume_kernel restore_all_enable_events #endif #define SAVE_ALL \ @@ -141,7 +141,7 @@ VM_MASK = 0x00020000 2: movl $(__USER_DS), %edx; \ movl %edx, %ds; \ movl %edx, %es; \ - pushl $11; \ + movl $11,%eax; \ call do_exit; \ .previous; \ .section __ex_table,"a";\ @@ -150,40 +150,6 @@ VM_MASK = 0x00020000 .previous - -ENTRY(lcall7) - pushfl # We get a different stack layout with call - # gates, which has to be cleaned up later.. - pushl %eax - SAVE_ALL - movl %esp, %ebp - pushl %ebp - pushl $0x7 -do_lcall: - movl EIP(%ebp), %eax # due to call gates, this is eflags, not eip.. - movl CS(%ebp), %edx # this is eip.. - movl EFLAGS(%ebp), %ecx # and this is cs.. - movl %eax,EFLAGS(%ebp) # - movl %edx,EIP(%ebp) # Now we move them to their "normal" places - movl %ecx,CS(%ebp) # - GET_THREAD_INFO_WITH_ESP(%ebp) # GET_THREAD_INFO - movl TI_exec_domain(%ebp), %edx # Get the execution domain - call *EXEC_DOMAIN_handler(%edx) # Call the handler for the domain - addl $4, %esp - popl %eax - jmp resume_userspace - -ENTRY(lcall27) - pushfl # We get a different stack layout with call - # gates, which has to be cleaned up later.. - pushl %eax - SAVE_ALL - movl %esp, %ebp - pushl %ebp - pushl $0x27 - jmp do_lcall - - ENTRY(ret_from_fork) pushl %eax call schedule_tail @@ -235,9 +201,9 @@ need_resched: movl $PREEMPT_ACTIVE,TI_preempt_count(%ebp) XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks call schedule - movl $0,TI_preempt_count(%ebp) movl HYPERVISOR_shared_info,%esi XEN_BLOCK_EVENTS(%esi) # make tests atomic + movl $0,TI_preempt_count(%ebp) jmp need_resched #endif @@ -270,11 +236,11 @@ sysenter_past_esp: pushl %eax SAVE_ALL GET_THREAD_INFO(%ebp) - cmpl $(nr_syscalls), %eax - jae syscall_badsys testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) jnz syscall_trace_entry + cmpl $(nr_syscalls), %eax + jae syscall_badsys call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) cli @@ -293,11 +259,11 @@ ENTRY(system_call) pushl %eax # save orig_eax SAVE_ALL GET_THREAD_INFO(%ebp) - cmpl $(nr_syscalls), %eax - jae syscall_badsys # system call tracing in operation testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) jnz syscall_trace_entry + cmpl $(nr_syscalls), %eax + jae syscall_badsys syscall_call: call *sys_call_table(,%eax,4) movl %eax,EAX(%esp) # store the return value @@ -312,10 +278,6 @@ syscall_exit: jne syscall_exit_work jmp restore_all_enable_events - ALIGN -restore_all: - RESTORE_ALL - # perform work that needs to be done immediately before resumption ALIGN work_pending: @@ -351,8 +313,8 @@ work_notifysig: # deal with pending signals and ALIGN work_notifysig_v86: - pushl %ecx - call save_v86_state + pushl %ecx # save ti_flags for do_notify_resume + call save_v86_state # %eax contains pt_regs pointer popl %ecx movl %eax, %esp xorl %edx, %edx @@ -376,7 +338,7 @@ syscall_trace_entry: ALIGN syscall_exit_work: movl HYPERVISOR_shared_info,%esi - testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT), %cl + testb $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP), %cl jz work_pending XEN_UNBLOCK_EVENTS(%esi) # reenable event callbacks # could let do_syscall_trace() call @@ -416,18 +378,15 @@ error_code: pushl %ebx cld movl %es, %ecx - movl ORIG_EAX(%esp), %esi # get the error code movl ES(%esp), %edi # get the function address + movl ORIG_EAX(%esp), %edx # get the error code movl %eax, ORIG_EAX(%esp) movl %ecx, ES(%esp) - movl %esp, %edx - pushl %esi # push the error code - pushl %edx # push the pt_regs pointer - movl $(__KERNEL_DS), %edx # XXXcl USER? - movl %edx, %ds - movl %edx, %es + movl $(__USER_DS), %ecx + movl %ecx, %ds + movl %ecx, %es + movl %esp,%eax # pt_regs pointer call *%edi - addl $8, %esp jmp ret_from_exception # A note on the "critical region" in our callback handler. @@ -584,9 +543,14 @@ ENTRY(debug) jne debug_stack_correct FIX_STACK(12, debug_stack_correct, debug_esp_fix_insn) debug_stack_correct: - pushl $0 - pushl $do_debug - jmp error_code + pushl $-1 # mark this as an int + SAVE_ALL + xorl %edx,%edx # error code 0 + movl %esp,%eax # pt_regs pointer + call do_debug + testl %eax,%eax + jnz restore_all_enable_events + jmp ret_from_exception #if 0 /* @@ -614,11 +578,9 @@ ENTRY(nmi) nmi_stack_correct: pushl %eax SAVE_ALL - movl %esp, %edx - pushl $0 - pushl %edx + xorl %edx,%edx # zero error code + movl %esp,%eax # pt_regs pointer call do_nmi - addl $8, %esp RESTORE_ALL nmi_stack_fixup: @@ -637,9 +599,14 @@ nmi_debug_stack_fixup: #endif ENTRY(int3) - pushl $0 - pushl $do_int3 - jmp error_code + pushl $-1 # mark this as an int + SAVE_ALL + xorl %edx,%edx # zero error code + movl %esp,%eax # pt_regs pointer + call do_int3 + testl %eax,%eax + jnz restore_all_enable_events + jmp ret_from_exception ENTRY(overflow) pushl $0 @@ -687,11 +654,13 @@ ENTRY(alignment_check) # This handler is special, because it gets an extra value on its stack, # which is the linear faulting address. +# fastcall register usage: %eax = pt_regs, %edx = error code, +# %ecx = fault address #define PAGE_FAULT_STUB(_name1, _name2) \ ENTRY(_name1) \ pushl %ds ; \ pushl %eax ; \ - xorl %eax,%eax ; \ + xorl %eax, %eax ; \ pushl %ebp ; \ pushl %edi ; \ pushl %esi ; \ @@ -699,22 +668,17 @@ ENTRY(_name1) \ decl %eax /* eax = -1 */ ; \ pushl %ecx ; \ pushl %ebx ; \ - GET_THREAD_INFO(%ebp) ; \ cld ; \ - movl %es,%ecx ; \ - movl ORIG_EAX(%esp), %esi /* get the error code */ ; \ - movl ES(%esp), %edi /* get the faulting address */ ; \ + movl %es,%edi ; \ + movl ES(%esp), %ecx /* get the faulting address */ ; \ + movl ORIG_EAX(%esp), %edx /* get the error code */ ; \ movl %eax, ORIG_EAX(%esp) ; \ - movl %ecx, ES(%esp) ; \ - movl %esp,%edx ; \ - pushl %edi /* push the faulting address */ ; \ - pushl %esi /* push the error code */ ; \ - pushl %edx /* push the pt_regs pointer */ ; \ - movl $(__KERNEL_DS),%edx ; \ - movl %edx,%ds ; \ - movl %edx,%es ; \ + movl %edi, ES(%esp) ; \ + movl $(__KERNEL_DS), %eax ; \ + movl %eax, %ds ; \ + movl %eax, %es ; \ + movl %esp,%eax /* pt_regs pointer */ ; \ call _name2 ; \ - addl $12,%esp ; \ jmp ret_from_exception ; PAGE_FAULT_STUB(page_fault, do_page_fault) @@ -1015,5 +979,10 @@ ENTRY(sys_call_table) .long sys_mq_notify .long sys_mq_getsetattr .long sys_ni_syscall /* reserved for kexec */ + .long sys_waitid + .long sys_ni_syscall /* 285 */ /* available */ + .long sys_add_key + .long sys_request_key + .long sys_keyctl syscall_table_size=(.-sys_call_table) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/head.S b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/head.S rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/head.S diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c similarity index 95% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c index 83ef382e6c..90c816717a 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/i386_ksyms.c @@ -71,14 +71,10 @@ EXPORT_SYMBOL(xquad_portio); #endif EXPORT_SYMBOL(dump_thread); EXPORT_SYMBOL(dump_fpu); -EXPORT_SYMBOL(dump_extended_fpu); EXPORT_SYMBOL_GPL(kernel_fpu_begin); EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(ioremap_nocache); EXPORT_SYMBOL(iounmap); -EXPORT_SYMBOL(enable_irq); -EXPORT_SYMBOL(disable_irq); -EXPORT_SYMBOL(disable_irq_nosync); EXPORT_SYMBOL(probe_irq_mask); EXPORT_SYMBOL(kernel_thread); EXPORT_SYMBOL(pm_idle); @@ -148,7 +144,6 @@ EXPORT_SYMBOL(__write_lock_failed); EXPORT_SYMBOL(__read_lock_failed); /* Global SMP stuff */ -EXPORT_SYMBOL(synchronize_irq); EXPORT_SYMBOL(smp_call_function); /* TLB flushing */ @@ -181,7 +176,7 @@ EXPORT_SYMBOL(memcmp); EXPORT_SYMBOL(register_die_notifier); #ifdef CONFIG_HAVE_DEC_LOCK -EXPORT_SYMBOL(atomic_dec_and_lock); +EXPORT_SYMBOL(_atomic_dec_and_lock); #endif EXPORT_SYMBOL(__PAGE_KERNEL); diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ioport.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ioport.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ioport.c diff --git a/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c new file mode 100644 index 0000000000..abac46a91c --- /dev/null +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/irq.c @@ -0,0 +1,256 @@ +/* + * linux/arch/i386/kernel/irq.c + * + * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar + * + * This file contains the lowest level x86-specific interrupt + * entry, irq-stacks and irq statistics code. All the remaining + * irq logic is done by the generic kernel/irq/ code and + * by the x86-specific irq controller code. (e.g. i8259.c and + * io_apic.c.) + */ + +#include +#include +#include +#include +#include + +#ifndef CONFIG_X86_LOCAL_APIC +/* + * 'what should we do if we get a hw irq event on an illegal vector'. + * each architecture has to answer this themselves. + */ +void ack_bad_irq(unsigned int irq) +{ + printk("unexpected IRQ trap at vector %02x\n", irq); +} +#endif + +#ifdef CONFIG_4KSTACKS +/* + * per-CPU IRQ handling contexts (thread information and stack) + */ +union irq_ctx { + struct thread_info tinfo; + u32 stack[THREAD_SIZE/sizeof(u32)]; +}; + +static union irq_ctx *hardirq_ctx[NR_CPUS]; +static union irq_ctx *softirq_ctx[NR_CPUS]; +#endif + +/* + * do_IRQ handles all normal device IRQ's (the special + * SMP cross-CPU interrupts have their own specific + * handlers). + */ +unsigned int do_IRQ(int irq, struct pt_regs *regs) +{ +#ifdef CONFIG_4KSTACKS + union irq_ctx *curctx, *irqctx; + u32 *isp; +#endif + + irq_enter(); +#ifdef CONFIG_DEBUG_STACKOVERFLOW + /* Debugging check for stack overflow: is there less than 1KB free? */ + { + long esp; + + __asm__ __volatile__("andl %%esp,%0" : + "=r" (esp) : "0" (THREAD_SIZE - 1)); + if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) { + printk("do_IRQ: stack overflow: %ld\n", + esp - sizeof(struct thread_info)); + dump_stack(); + } + } +#endif + +#ifdef CONFIG_4KSTACKS + + curctx = (union irq_ctx *) current_thread_info(); + irqctx = hardirq_ctx[smp_processor_id()]; + + /* + * this is where we switch to the IRQ stack. However, if we are + * already using the IRQ stack (because we interrupted a hardirq + * handler) we can't do that and just have to keep using the + * current stack (which is the irq stack already after all) + */ + if (curctx != irqctx) { + int arg1, arg2, ebx; + + /* build the stack frame on the IRQ stack */ + isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); + irqctx->tinfo.task = curctx->tinfo.task; + irqctx->tinfo.previous_esp = current_stack_pointer; + + asm volatile( + " xchgl %%ebx,%%esp \n" + " call __do_IRQ \n" + " movl %%ebx,%%esp \n" + : "=a" (arg1), "=d" (arg2), "=b" (ebx) + : "0" (irq), "1" (regs), "2" (isp) + : "memory", "cc", "ecx" + ); + } else +#endif + __do_IRQ(irq, regs); + + irq_exit(); + + return 1; +} + +#ifdef CONFIG_4KSTACKS + +/* + * These should really be __section__(".bss.page_aligned") as well, but + * gcc's 3.0 and earlier don't handle that correctly. + */ +static char softirq_stack[NR_CPUS * THREAD_SIZE] + __attribute__((__aligned__(THREAD_SIZE))); + +static char hardirq_stack[NR_CPUS * THREAD_SIZE] + __attribute__((__aligned__(THREAD_SIZE))); + +/* + * allocate per-cpu stacks for hardirq and for softirq processing + */ +void irq_ctx_init(int cpu) +{ + union irq_ctx *irqctx; + + if (hardirq_ctx[cpu]) + return; + + irqctx = (union irq_ctx*) &hardirq_stack[cpu*THREAD_SIZE]; + irqctx->tinfo.task = NULL; + irqctx->tinfo.exec_domain = NULL; + irqctx->tinfo.cpu = cpu; + irqctx->tinfo.preempt_count = HARDIRQ_OFFSET; + irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); + + hardirq_ctx[cpu] = irqctx; + + irqctx = (union irq_ctx*) &softirq_stack[cpu*THREAD_SIZE]; + irqctx->tinfo.task = NULL; + irqctx->tinfo.exec_domain = NULL; + irqctx->tinfo.cpu = cpu; + irqctx->tinfo.preempt_count = SOFTIRQ_OFFSET; + irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); + + softirq_ctx[cpu] = irqctx; + + printk("CPU %u irqstacks, hard=%p soft=%p\n", + cpu,hardirq_ctx[cpu],softirq_ctx[cpu]); +} + +extern asmlinkage void __do_softirq(void); + +asmlinkage void do_softirq(void) +{ + unsigned long flags; + struct thread_info *curctx; + union irq_ctx *irqctx; + u32 *isp; + + if (in_interrupt()) + return; + + local_irq_save(flags); + + if (local_softirq_pending()) { + curctx = current_thread_info(); + irqctx = softirq_ctx[smp_processor_id()]; + irqctx->tinfo.task = curctx->task; + irqctx->tinfo.previous_esp = current_stack_pointer; + + /* build the stack frame on the softirq stack */ + isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); + + asm volatile( + " xchgl %%ebx,%%esp \n" + " call __do_softirq \n" + " movl %%ebx,%%esp \n" + : "=b"(isp) + : "0"(isp) + : "memory", "cc", "edx", "ecx", "eax" + ); + } + + local_irq_restore(flags); +} + +EXPORT_SYMBOL(do_softirq); +#endif + +/* + * Interrupt statistics: + */ + +atomic_t irq_err_count; + +/* + * /proc/interrupts printing: + */ + +int show_interrupts(struct seq_file *p, void *v) +{ + int i = *(loff_t *) v, j; + struct irqaction * action; + unsigned long flags; + + if (i == 0) { + seq_printf(p, " "); + for (j=0; jtypename); + seq_printf(p, " %s", action->name); + + for (action=action->next; action; action = action->next) + seq_printf(p, ", %s", action->name); + + seq_putc(p, '\n'); +skip: + spin_unlock_irqrestore(&irq_desc[i].lock, flags); + } else if (i == NR_IRQS) { + seq_printf(p, "NMI: "); + for (j = 0; j < NR_CPUS; j++) + if (cpu_online(j)) + seq_printf(p, "%10u ", nmi_count(j)); + seq_putc(p, '\n'); +#ifdef CONFIG_X86_LOCAL_APIC + seq_printf(p, "LOC: "); + for (j = 0; j < NR_CPUS; j++) + if (cpu_online(j)) + seq_printf(p, "%10u ", + irq_stat[j].apic_timer_irqs); + seq_putc(p, '\n'); +#endif + seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); +#if defined(CONFIG_X86_IO_APIC) + seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count)); +#endif + } + return 0; +} diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ldt.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/ldt.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/ldt.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/pci-dma.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/pci-dma.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/pci-dma.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c similarity index 98% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c index 1552e00db7..03778c9dbd 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/process.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/process.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -59,6 +59,9 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); int hlt_counter; +unsigned long boot_option_idle_override = 0; +EXPORT_SYMBOL(boot_option_idle_override); + /* * Return saved PC of a blocked thread. */ @@ -146,7 +149,8 @@ void show_regs(struct pt_regs * regs) if (regs->xcs & 2) printk(" ESP: %04x:%08lx",0xffff & regs->xss,regs->esp); - printk(" EFLAGS: %08lx %s (%s)\n",regs->eflags, print_tainted(),UTS_RELEASE); + printk(" EFLAGS: %08lx %s (%s)\n", + regs->eflags, print_tainted(),UTS_RELEASE); printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", regs->eax,regs->ebx,regs->ecx,regs->edx); printk("ESI: %08lx EDI: %08lx EBP: %08lx", @@ -249,7 +253,7 @@ void release_thread(struct task_struct *dead_task) } } - release_x86_irqs(dead_task); + release_vm86_irqs(dead_task); } /* @@ -274,7 +278,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, *childregs = *regs; childregs->eax = 0; childregs->esp = esp; - p->set_child_tid = p->clear_child_tid = NULL; p->thread.esp = (unsigned long) childregs; p->thread.esp0 = (unsigned long) (childregs+1); @@ -390,6 +393,7 @@ int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs) elf_core_copy_regs(regs, &ptregs); + boot_option_idle_override = 1; return 1; } @@ -620,7 +624,9 @@ asmlinkage int sys_execve(struct pt_regs regs) (char __user * __user *) regs.edx, ®s); if (error == 0) { + task_lock(current); current->ptrace &= ~PT_DTRACE; + task_unlock(current); /* Make sure we don't return using sysenter.. */ set_thread_flag(TIF_IRET); } diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/setup.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/setup.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/setup.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c similarity index 99% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c index 4c264706cf..20becc71fa 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/signal.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/signal.c @@ -413,7 +413,7 @@ static void setup_frame(int sig, struct k_sigaction *ka, regs->xss = __USER_DS; regs->xcs = __USER_CS; if (regs->eflags & TF_MASK) { - if (current->ptrace & PT_PTRACED) { + if ((current->ptrace & (PT_PTRACED | PT_DTRACE)) == (PT_PTRACED | PT_DTRACE)) { ptrace_notify(SIGTRAP); } else { regs->eflags &= ~TF_MASK; @@ -600,9 +600,10 @@ int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset) * have been cleared if the watchpoint triggered * inside the kernel. */ - if (current->thread.debugreg[7]) + if (unlikely(current->thread.debugreg[7])) { HYPERVISOR_set_debugreg(7, current->thread.debugreg[7]); + } /* Whee! Actually deliver the signal. */ handle_signal(signr, &info, &ka, oldset, regs); diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/sysenter.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/sysenter.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/sysenter.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/sysenter.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c similarity index 95% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c index 1edc1cbf83..81f03f4072 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/time.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/time.c @@ -84,6 +84,8 @@ spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; spinlock_t i8253_lock = SPIN_LOCK_UNLOCKED; EXPORT_SYMBOL(i8253_lock); +extern struct init_timer_opts __initdata timer_tsc_init; +extern struct timer_opts timer_tsc; struct timer_opts *cur_timer = &timer_tsc; /* These are peridically updated in shared_info, and then copied here. */ @@ -401,6 +403,9 @@ static inline void do_timer_interrupt(int irq, void *dev_id, delta -= NS_PER_TICK; processed_system_time += NS_PER_TICK; do_timer(regs); +#ifndef CONFIG_SMP + update_process_times(user_mode(regs)); +#endif if (regs) profile_tick(CPU_PROFILING, regs); } @@ -533,47 +538,57 @@ unsigned long get_cmos_time(void) return retval; } -static long clock_cmos_diff; +static long clock_cmos_diff, sleep_start; -static int __time_suspend(struct sys_device *dev, u32 state) +static int timer_suspend(struct sys_device *dev, u32 state) { /* * Estimate time zone so that set_time can update the clock */ clock_cmos_diff = -get_cmos_time(); clock_cmos_diff += get_seconds(); + sleep_start = get_cmos_time(); return 0; } -static int __time_resume(struct sys_device *dev) +static int timer_resume(struct sys_device *dev) { unsigned long flags; - unsigned long sec = get_cmos_time() + clock_cmos_diff; + unsigned long sec; + unsigned long sleep_length; + +#ifdef CONFIG_HPET_TIMER + if (is_hpet_enabled()) + hpet_reenable(); +#endif + sec = get_cmos_time() + clock_cmos_diff; + sleep_length = get_cmos_time() - sleep_start; write_seqlock_irqsave(&xtime_lock, flags); xtime.tv_sec = sec; xtime.tv_nsec = 0; write_sequnlock_irqrestore(&xtime_lock, flags); + jiffies += sleep_length * HZ; return 0; } -static struct sysdev_class pit_sysclass = { - .resume = __time_resume, - .suspend = __time_suspend, - set_kset_name("pit"), +static struct sysdev_class timer_sysclass = { + .resume = timer_resume, + .suspend = timer_suspend, + set_kset_name("timer"), }; /* XXX this driverfs stuff should probably go elsewhere later -john */ -static struct sys_device device_i8253 = { +static struct sys_device device_timer = { .id = 0, - .cls = &pit_sysclass, + .cls = &timer_sysclass, }; static int time_init_device(void) { - int error = sysdev_class_register(&pit_sysclass); + int error = sysdev_class_register(&timer_sysclass); if (!error) - error = sysdev_register(&device_i8253); + error = sysdev_register(&device_timer); return error; } @@ -627,7 +642,7 @@ void __init time_init(void) wall_to_monotonic.tv_nsec = -xtime.tv_nsec; processed_system_time = shadow_system_time; - if (cur_timer->init(NULL) != 0) + if (timer_tsc_init.init(NULL) != 0) BUG(); printk(KERN_INFO "Using %s for high-res timesource\n",cur_timer->name); @@ -681,7 +696,7 @@ void time_suspend(void) /* No locking required. We are only CPU running, and interrupts are off. */ void time_resume(void) { - if (cur_timer->init(NULL) != 0) + if (timer_tsc_init.init(NULL) != 0) BUG(); /* Get timebases for new environment. */ diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c similarity index 97% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c index d4d64de094..8ca7897c78 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/timers/timer_tsc.c @@ -24,7 +24,7 @@ #ifdef CONFIG_HPET_TIMER static unsigned long hpet_usec_quotient; static unsigned long hpet_last; -struct timer_opts timer_tsc; +static struct timer_opts timer_tsc; #endif static inline void cpufreq_delayed_get(void); @@ -370,10 +370,14 @@ __setup("notsc", tsc_setup); /* tsc timer_opts struct */ struct timer_opts timer_tsc = { - .name = "tsc", - .init = init_tsc, - .mark_offset = mark_offset_tsc, - .get_offset = get_offset_tsc, - .monotonic_clock = monotonic_clock_tsc, + .name = "tsc", + .mark_offset = mark_offset_tsc, + .get_offset = get_offset_tsc, + .monotonic_clock = monotonic_clock_tsc, .delay = delay_tsc, }; + +struct init_timer_opts __initdata timer_tsc_init = { + .init = init_tsc, + .opts = &timer_tsc, +}; diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c similarity index 94% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c index 9b2fa628e1..8153348f5f 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/traps.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #ifdef CONFIG_EISA @@ -57,8 +57,6 @@ #include "mach_traps.h" asmlinkage int system_call(void); -asmlinkage void lcall7(void); -asmlinkage void lcall27(void); /* Do we ignore FPU interrupts ? */ char ignore_fpu_irq = 0; @@ -105,36 +103,27 @@ int register_die_notifier(struct notifier_block *nb) return err; } -static int valid_stack_ptr(struct task_struct *task, void *p) +static inline int valid_stack_ptr(struct thread_info *tinfo, void *p) { - if (p <= (void *)task->thread_info) - return 0; - if (kstack_end(p)) - return 0; - return 1; + return p > (void *)tinfo && + p < (void *)tinfo + THREAD_SIZE - 3; } -#ifdef CONFIG_FRAME_POINTER -static void print_context_stack(struct task_struct *task, unsigned long *stack, - unsigned long ebp) +static inline unsigned long print_context_stack(struct thread_info *tinfo, + unsigned long *stack, unsigned long ebp) { unsigned long addr; - while (valid_stack_ptr(task, (void *)ebp)) { +#ifdef CONFIG_FRAME_POINTER + while (valid_stack_ptr(tinfo, (void *)ebp)) { addr = *(unsigned long *)(ebp + 4); printk(" [<%08lx>] ", addr); print_symbol("%s", addr); printk("\n"); ebp = *(unsigned long *)ebp; } -} #else -static void print_context_stack(struct task_struct *task, unsigned long *stack, - unsigned long ebp) -{ - unsigned long addr; - - while (!kstack_end(stack)) { + while (valid_stack_ptr(tinfo, stack)) { addr = *stack++; if (__kernel_text_address(addr)) { printk(" [<%08lx>]", addr); @@ -142,8 +131,9 @@ static void print_context_stack(struct task_struct *task, unsigned long *stack, printk("\n"); } } -} #endif + return ebp; +} void show_trace(struct task_struct *task, unsigned long * stack) { @@ -152,11 +142,6 @@ void show_trace(struct task_struct *task, unsigned long * stack) if (!task) task = current; - if (!valid_stack_ptr(task, stack)) { - printk("Stack pointer is garbage, not printing trace\n"); - return; - } - if (task == current) { /* Grab ebp right from our regs */ asm ("movl %%ebp, %0" : "=r" (ebp) : ); @@ -169,7 +154,7 @@ void show_trace(struct task_struct *task, unsigned long * stack) struct thread_info *context; context = (struct thread_info *) ((unsigned long)stack & (~(THREAD_SIZE - 1))); - print_context_stack(task, stack, ebp); + ebp = print_context_stack(context, stack, ebp); stack = (unsigned long*)context->previous_esp; if (!stack) break; @@ -231,7 +216,7 @@ void show_registers(struct pt_regs *regs) printk("CPU: %d\nEIP: %04x:[<%08lx>] %s VLI\nEFLAGS: %08lx" " (%s) \n", smp_processor_id(), 0xffff & regs->xcs, regs->eip, - print_tainted(), regs->eflags, UTS_RELEASE); + print_tainted(), regs->eflags, system_utsname.release); print_symbol("EIP is at %s\n", regs->eip); printk("eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n", regs->eax, regs->ebx, regs->ecx, regs->edx); @@ -417,7 +402,7 @@ static inline void do_trap(int trapnr, int signr, char *str, int vm86, } #define DO_ERROR(trapnr, signr, str, name) \ -asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ { \ if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ == NOTIFY_STOP) \ @@ -426,7 +411,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ } #define DO_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ -asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ { \ siginfo_t info; \ info.si_signo = signr; \ @@ -440,7 +425,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ } #define DO_VM86_ERROR(trapnr, signr, str, name) \ -asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ { \ if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ == NOTIFY_STOP) \ @@ -449,7 +434,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ } #define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ -asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ +fastcall void do_##name(struct pt_regs * regs, long error_code) \ { \ siginfo_t info; \ info.si_signo = signr; \ @@ -480,7 +465,7 @@ DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) DO_ERROR(18, SIGBUS, "machine check", machine_check) #endif -asmlinkage void do_general_protection(struct pt_regs * regs, long error_code) +fastcall void do_general_protection(struct pt_regs * regs, long error_code) { /* * If we trapped on an LDT access then ensure that the default_ldt is @@ -592,7 +577,11 @@ void die_nmi (struct pt_regs *regs, const char *msg) static void default_do_nmi(struct pt_regs * regs) { - unsigned char reason = get_nmi_reason(); + unsigned char reason = 0; + + /* Only the BSP gets external NMIs from the system. */ + if (!smp_processor_id()) + reason = get_nmi_reason(); if (!(reason & 0xc0)) { if (notify_die(DIE_NMI_IPI, "nmi_ipi", regs, reason, 0, SIGINT) @@ -631,7 +620,7 @@ static int dummy_nmi_callback(struct pt_regs * regs, int cpu) static nmi_callback_t nmi_callback = dummy_nmi_callback; -asmlinkage void do_nmi(struct pt_regs * regs, long error_code) +fastcall void do_nmi(struct pt_regs * regs, long error_code) { int cpu; @@ -657,7 +646,7 @@ void unset_nmi_callback(void) } #ifdef CONFIG_KPROBES -asmlinkage int do_int3(struct pt_regs *regs, long error_code) +fastcall int do_int3(struct pt_regs *regs, long error_code) { if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) == NOTIFY_STOP) @@ -692,7 +681,7 @@ asmlinkage int do_int3(struct pt_regs *regs, long error_code) * find every occurrence of the TF bit that could be saved away even * by user code) */ -asmlinkage void do_debug(struct pt_regs * regs, long error_code) +fastcall void do_debug(struct pt_regs * regs, long error_code) { unsigned int condition; struct task_struct *tsk = current; @@ -831,7 +820,7 @@ void math_error(void __user *eip) force_sig_info(SIGFPE, &info, task); } -asmlinkage void do_coprocessor_error(struct pt_regs * regs, long error_code) +fastcall void do_coprocessor_error(struct pt_regs * regs, long error_code) { ignore_fpu_irq = 1; math_error((void __user *)regs->eip); @@ -885,7 +874,7 @@ void simd_math_error(void __user *eip) force_sig_info(SIGFPE, &info, task); } -asmlinkage void do_simd_coprocessor_error(struct pt_regs * regs, +fastcall void do_simd_coprocessor_error(struct pt_regs * regs, long error_code) { if (cpu_has_xmm) { @@ -1010,11 +999,6 @@ static void __init set_system_gate(unsigned int n, void *addr) } #endif -static void __init set_call_gate(void *a, void *addr) -{ - _set_gate(a,12,3,addr,__KERNEL_CS); -} - #if 0 static void __init set_task_gate(unsigned int n, unsigned int gdt_entry) { @@ -1060,8 +1044,6 @@ void __init trap_init(void) * and a callgate to lcall27 for Solaris/x86 binaries */ clear_page(&default_ldt[0]); - set_call_gate(&default_ldt[0],lcall7); - set_call_gate(&default_ldt[4],lcall27); make_lowmem_page_readonly(&default_ldt[0]); xen_flush_page_update_queue(); diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vmlinux.lds.S diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.S b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.S similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.S rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.S diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.lds b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.lds similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/kernel/vsyscall.lds rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/kernel/vsyscall.lds diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c similarity index 99% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c index b8d7e466a8..7d9acce871 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/fault.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/fault.c @@ -203,7 +203,7 @@ static inline int is_prefetch(struct pt_regs *regs, unsigned long addr, return 0; } -asmlinkage void do_invalid_op(struct pt_regs *, unsigned long); +fastcall void do_invalid_op(struct pt_regs *, unsigned long); /* * This routine handles page faults. It determines the address, @@ -215,7 +215,7 @@ asmlinkage void do_invalid_op(struct pt_regs *, unsigned long); * bit 1 == 0 means read, 1 means write * bit 2 == 0 means kernel, 1 means user-mode */ -asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, +fastcall void do_page_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address) { struct task_struct *tsk; diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/highmem.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/highmem.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/highmem.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/highmem.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/hypervisor.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/hypervisor.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/hypervisor.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c similarity index 99% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c index 74704113e6..df83e4b6e1 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/init.c @@ -481,8 +481,8 @@ static int __init noexec_setup(char *str) __setup("noexec=", noexec_setup); -#ifdef CONFIG_X86_PAE int nx_enabled = 0; +#ifdef CONFIG_X86_PAE static void __init set_nx(void) { @@ -795,6 +795,7 @@ void free_initmem(void) for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) { ClearPageReserved(virt_to_page(addr)); set_page_count(virt_to_page(addr), 1); + memset((void *)addr, 0xcc, PAGE_SIZE); free_page(addr); totalram_pages++; } diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/ioremap.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/ioremap.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c similarity index 99% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c index 74f3b150df..7c961c7a7d 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pageattr.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pageattr.c @@ -209,7 +209,6 @@ void kernel_map_pages(struct page *page, int numpages, int enable) */ __flush_tlb_all(); } -EXPORT_SYMBOL(kernel_map_pages); #endif EXPORT_SYMBOL(change_page_attr); diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c similarity index 97% rename from linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c index 2fadb97535..7339d93c01 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/mm/pgtable.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/mm/pgtable.c @@ -259,10 +259,8 @@ void pmd_ctor(void *pmd, kmem_cache_t *cache, unsigned long flags) * against pageattr.c; it is the unique case in which a valid change * of kernel pagetables can't be lazily synchronized by vmalloc faults. * vmalloc faults work because attached pagetables are never freed. - * If the locking proves to be non-performant, a ticketing scheme with - * checks at dup_mmap(), exec(), and other mmlist addition points - * could be used. The locking scheme was chosen on the basis of - * manfred's recommendations and having no core impact whatsoever. + * The locking scheme was chosen on the basis of manfred's + * recommendations and having no core impact whatsoever. * -- wli */ spinlock_t pgd_lock = SPIN_LOCK_UNLOCKED; @@ -340,7 +338,7 @@ pgd_t *pgd_alloc(struct mm_struct *mm) pmd_t *pmd = kmem_cache_alloc(pmd_cache, GFP_KERNEL); if (!pmd) goto out_oom; - set_pgd(&pgd[i], __pgd(1 + __pa((u64)((u32)pmd)))); + set_pgd(&pgd[i], __pgd(1 + __pa(pmd))); } return pgd; diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/pci/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/pci/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/pci/direct.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/direct.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/i386/pci/direct.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/direct.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c similarity index 93% rename from linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c index aef1adf12e..efd7e84040 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/pci/irq.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/i386/pci/irq.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "pci.h" @@ -67,13 +68,24 @@ static int __init pcibios_irq_init(void) subsys_initcall(pcibios_irq_init); -void pcibios_penalize_isa_irq(int irq) +static void pirq_penalize_isa_irq(int irq) { /* * If any ISAPnP device reports an IRQ in its list of possible * IRQ's, we try to avoid assigning it to PCI devices. */ - pirq_penalty[irq] += 100; + if (irq < 16) + pirq_penalty[irq] += 100; +} + +void pcibios_penalize_isa_irq(int irq) +{ +#ifdef CONFIG_ACPI_PCI + if (!acpi_noirq) + acpi_penalize_isa_irq(irq); + else +#endif + pirq_penalize_isa_irq(irq); } int pirq_enable_irq(struct pci_dev *dev) diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/Makefile b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/Makefile rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/Makefile diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/ctrl_if.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/ctrl_if.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/ctrl_if.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/ctrl_if.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/empty.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/empty.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/empty.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/empty.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c similarity index 99% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c index 9648518ae8..c3d912d1df 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/kernel/evtchn.c +++ b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/evtchn.c @@ -68,7 +68,7 @@ static int irq_bindcount[NR_IRQS]; static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; /* Upcall to generic IRQ layer. */ -extern asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs); +extern unsigned int do_IRQ(int irq, struct pt_regs *regs); #define VALID_EVTCHN(_chn) ((_chn) != -1) diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/fixup.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/fixup.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/fixup.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/fixup.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/gnttab.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/gnttab.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/gnttab.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/gnttab.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/reboot.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/reboot.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/skbuff.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/skbuff.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/skbuff.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/skbuff.c diff --git a/linux-2.6.9-xen-sparse/arch/xen/kernel/xen_proc.c b/linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/xen_proc.c similarity index 100% rename from linux-2.6.9-xen-sparse/arch/xen/kernel/xen_proc.c rename to linux-2.6.10-rc2-xen-sparse/arch/xen/kernel/xen_proc.c diff --git a/linux-2.6.9-xen-sparse/drivers/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/Makefile similarity index 93% rename from linux-2.6.9-xen-sparse/drivers/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/Makefile index 6137e3883d..6aa99acc8b 100644 --- a/linux-2.6.9-xen-sparse/drivers/Makefile +++ b/linux-2.6.10-rc2-xen-sparse/drivers/Makefile @@ -17,8 +17,9 @@ obj-$(CONFIG_PNP) += pnp/ # default. obj-y += char/ -# i810fb depends on char/agp/ +# i810fb and intelfb depend on char/agp/ obj-$(CONFIG_FB_I810) += video/i810/ +obj-$(CONFIG_FB_INTEL) += video/intelfb/ # we also need input/serio early so serio bus is initialized by the time # serial drivers start registering their serio ports @@ -37,7 +38,7 @@ obj-$(CONFIG_FUSION) += message/ obj-$(CONFIG_IEEE1394) += ieee1394/ obj-y += cdrom/ obj-$(CONFIG_MTD) += mtd/ -obj-$(CONFIG_PCMCIA) += pcmcia/ +obj-$(CONFIG_PCCARD) += pcmcia/ obj-$(CONFIG_DIO) += dio/ obj-$(CONFIG_SBUS) += sbus/ obj-$(CONFIG_ZORRO) += zorro/ diff --git a/linux-2.6.9-xen-sparse/drivers/char/mem.c b/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c similarity index 97% rename from linux-2.6.9-xen-sparse/drivers/char/mem.c rename to linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c index 072c5ca761..25df669389 100644 --- a/linux-2.6.9-xen-sparse/drivers/char/mem.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/char/mem.c @@ -198,31 +198,28 @@ static ssize_t write_mem(struct file * file, const char __user * buf, static int mmap_mem(struct file * file, struct vm_area_struct * vma) { +#ifdef pgprot_noncached unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; int uncached; uncached = uncached_access(file, offset); -#ifdef pgprot_noncached if (uncached) vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); #endif - /* Don't try to swap out physical pages.. */ - vma->vm_flags |= VM_RESERVED; - - /* - * Don't dump addresses that are not real memory to a core file. - */ - if (uncached) - vma->vm_flags |= VM_IO; - #if defined(CONFIG_XEN) - if (io_remap_page_range(vma, vma->vm_start, offset, - vma->vm_end-vma->vm_start, vma->vm_page_prot)) + if (io_remap_page_range(vma, + vma->vm_start, + vma->vm_pgoff << PAGE_SHIFT, + vma->vm_end-vma->vm_start, + vma->vm_page_prot)) return -EAGAIN; #else - if (remap_page_range(vma, vma->vm_start, offset, vma->vm_end-vma->vm_start, - vma->vm_page_prot)) + if (remap_pfn_range(vma, + vma->vm_start, + vma->vm_pgoff, + vma->vm_end-vma->vm_start, + vma->vm_page_prot)) return -EAGAIN; #endif return 0; diff --git a/linux-2.6.9-xen-sparse/drivers/char/tty_io.c b/linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c similarity index 98% rename from linux-2.6.9-xen-sparse/drivers/char/tty_io.c rename to linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c index 83dd5bac6d..eeabe59cde 100644 --- a/linux-2.6.9-xen-sparse/drivers/char/tty_io.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/char/tty_io.c @@ -93,10 +93,10 @@ #include #include #include +#include #include #include -#include #include #include @@ -170,6 +170,7 @@ static struct tty_struct *alloc_tty_struct(void) static inline void free_tty_struct(struct tty_struct *tty) { + kfree(tty->write_buf); kfree(tty); } @@ -1021,41 +1022,72 @@ static ssize_t tty_read(struct file * file, char __user * buf, size_t count, * denial-of-service type attacks */ static inline ssize_t do_tty_write( - ssize_t (*write)(struct tty_struct *, struct file *, const unsigned char __user *, size_t), + ssize_t (*write)(struct tty_struct *, struct file *, const unsigned char *, size_t), struct tty_struct *tty, struct file *file, - const unsigned char __user *buf, + const char __user *buf, size_t count) { ssize_t ret = 0, written = 0; + unsigned int chunk; if (down_interruptible(&tty->atomic_write)) { return -ERESTARTSYS; } - if ( test_bit(TTY_NO_WRITE_SPLIT, &tty->flags) ) { + + /* + * We chunk up writes into a temporary buffer. This + * simplifies low-level drivers immensely, since they + * don't have locking issues and user mode accesses. + * + * But if TTY_NO_WRITE_SPLIT is set, we should use a + * big chunk-size.. + */ + chunk = 4096; + if (test_bit(TTY_NO_WRITE_SPLIT, &tty->flags)) + chunk = 65536; + if (count < chunk) + chunk = count; + + /* write_buf/write_cnt is protected by the atomic_write semaphore */ + if (tty->write_cnt < chunk) { + unsigned char *buf; + + if (chunk < 1024) + chunk = 1024; + + buf = kmalloc(chunk, GFP_KERNEL); + if (!buf) { + up(&tty->atomic_write); + return -ENOMEM; + } + kfree(tty->write_buf); + tty->write_cnt = chunk; + tty->write_buf = buf; + } + + /* Do the write .. */ + for (;;) { + size_t size = count; + if (size > chunk) + size = chunk; + ret = -EFAULT; + if (copy_from_user(tty->write_buf, buf, size)) + break; lock_kernel(); - written = write(tty, file, buf, count); + ret = write(tty, file, tty->write_buf, size); unlock_kernel(); - } else { - for (;;) { - unsigned long size = max((unsigned long)PAGE_SIZE*2, 16384UL); - if (size > count) - size = count; - lock_kernel(); - ret = write(tty, file, buf, size); - unlock_kernel(); - if (ret <= 0) - break; - written += ret; - buf += ret; - count -= ret; - if (!count) - break; - ret = -ERESTARTSYS; - if (signal_pending(current)) - break; - cond_resched(); - } + if (ret <= 0) + break; + written += ret; + buf += ret; + count -= ret; + if (!count) + break; + ret = -ERESTARTSYS; + if (signal_pending(current)) + break; + cond_resched(); } if (written) { file->f_dentry->d_inode->i_mtime = CURRENT_TIME; @@ -1084,8 +1116,7 @@ static ssize_t tty_write(struct file * file, const char __user * buf, size_t cou if (!ld->write) ret = -EIO; else - ret = do_tty_write(ld->write, tty, file, - (const unsigned char __user *)buf, count); + ret = do_tty_write(ld->write, tty, file, buf, count); tty_ldisc_deref(ld); return ret; } @@ -1983,10 +2014,10 @@ static int tiocswinsz(struct tty_struct *tty, struct tty_struct *real_tty, static int tioccons(struct file *file) { + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; if (file->f_op->write == redirected_tty_write) { struct file *f; - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; spin_lock(&redirect_lock); f = redirect; redirect = NULL; @@ -2119,11 +2150,11 @@ static int tiocsetd(struct tty_struct *tty, int __user *p) static int send_break(struct tty_struct *tty, int duration) { - set_current_state(TASK_INTERRUPTIBLE); - tty->driver->break_ctl(tty, -1); - if (!signal_pending(current)) + if (!signal_pending(current)) { + set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(duration); + } tty->driver->break_ctl(tty, 0); if (signal_pending(current)) return -EINTR; @@ -2620,7 +2651,7 @@ static void initialize_tty_struct(struct tty_struct *tty) */ static void tty_default_put_char(struct tty_struct *tty, unsigned char ch) { - tty->driver->write(tty, 0, &ch, 1); + tty->driver->write(tty, &ch, 1); } static struct class_simple *tty_class; diff --git a/linux-2.6.9-xen-sparse/drivers/xen/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/balloon/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/balloon/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/balloon/balloon.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/balloon.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/balloon/balloon.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/balloon/balloon.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/blkback.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/blkback.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/blkback.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/common.h b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/common.h similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/common.h rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/common.h diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/control.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/control.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/control.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/control.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/interface.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/interface.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/interface.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/interface.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkback/vbd.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/vbd.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkback/vbd.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkback/vbd.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/Kconfig b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Kconfig similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkfront/Kconfig rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Kconfig diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkfront/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/blkfront.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/blkfront.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkfront/blkfront.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/blkfront.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/block.h b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/block.h similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/blkfront/block.h rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/block.h diff --git a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c similarity index 99% rename from linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c index d2cfb7cf5a..916a50bfbb 100644 --- a/linux-2.6.9-xen-sparse/drivers/xen/blkfront/vbd.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/xen/blkfront/vbd.c @@ -233,7 +233,7 @@ static struct gendisk *xlvbd_get_gendisk(struct xlbd_major_info *mi, &blkif_io_lock); if (xlbd_blk_queue == NULL) goto out; - elevator_init(xlbd_blk_queue, &elevator_noop); + elevator_init(xlbd_blk_queue, "noop"); /* * Turn off barking 'headactive' mode. We dequeue @@ -530,7 +530,7 @@ int xlvbd_init(void) * therefore permanently increment the reference count to * disallow it. */ - MOD_INC_USE_COUNT; + /* MOD_INC_USE_COUNT; */ memset(major_info, 0, sizeof(major_info)); diff --git a/linux-2.6.9-xen-sparse/drivers/xen/console/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/console/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/console/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/console/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/console/console.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c similarity index 97% rename from linux-2.6.9-xen-sparse/drivers/xen/console/console.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c index b293961363..8657f918b1 100644 --- a/linux-2.6.9-xen-sparse/drivers/xen/console/console.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/xen/console/console.c @@ -478,8 +478,32 @@ static inline int __xencons_put_char(int ch) return 1; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) +static int xencons_write(struct tty_struct *tty, const unsigned char *buf, + int count) +{ + int i; + unsigned long flags; + + if ( TTY_INDEX(tty) != 0 ) + return count; + + spin_lock_irqsave(&xencons_lock, flags); + + for ( i = 0; i < count; i++ ) + if ( !__xencons_put_char(buf[i]) ) + break; + + if ( i != 0 ) + __xencons_tx_flush(); + + spin_unlock_irqrestore(&xencons_lock, flags); + + return i; +} +#else static int xencons_write(struct tty_struct *tty, int from_user, - const u_char * buf, int count) + const u_char *buf, int count) { int i; unsigned long flags; @@ -510,6 +534,7 @@ static int xencons_write(struct tty_struct *tty, int from_user, return i; } +#endif static void xencons_put_char(struct tty_struct *tty, u_char ch) { @@ -562,8 +587,6 @@ static int xencons_open(struct tty_struct *tty, struct file *filp) if ( TTY_INDEX(tty) != 0 ) return 0; - MOD_INC_USE_COUNT; - spin_lock_irqsave(&xencons_lock, flags); tty->driver_data = NULL; if ( xencons_tty == NULL ) @@ -594,8 +617,6 @@ static void xencons_close(struct tty_struct *tty, struct file *filp) xencons_tty = NULL; spin_unlock_irqrestore(&xencons_lock, flags); } - - MOD_DEC_USE_COUNT; } #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) diff --git a/linux-2.6.9-xen-sparse/drivers/xen/evtchn/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/evtchn/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c similarity index 99% rename from linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c index d0406790c6..97d229001d 100644 --- a/linux-2.6.9-xen-sparse/drivers/xen/evtchn/evtchn.c +++ b/linux-2.6.10-rc2-xen-sparse/drivers/xen/evtchn/evtchn.c @@ -326,8 +326,6 @@ static int evtchn_open(struct inode *inode, struct file *filp) filp->private_data = u; - MOD_INC_USE_COUNT; - return 0; } @@ -351,8 +349,6 @@ static int evtchn_release(struct inode *inode, struct file *filp) spin_unlock_irq(&port_user_lock); - MOD_DEC_USE_COUNT; - return 0; } diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netback/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netback/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netback/common.h b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/common.h similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netback/common.h rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/common.h diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netback/control.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/control.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netback/control.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/control.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/interface.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netback/interface.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/interface.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/netback.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netback/netback.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netfront/Kconfig b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Kconfig similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netfront/Kconfig rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Kconfig diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netfront/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netfront/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/netfront/netfront.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/netfront.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/netfront/netfront.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/netfront/netfront.c diff --git a/linux-2.6.9-xen-sparse/drivers/xen/privcmd/Makefile b/linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/Makefile similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/privcmd/Makefile rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/Makefile diff --git a/linux-2.6.9-xen-sparse/drivers/xen/privcmd/privcmd.c b/linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/privcmd.c similarity index 100% rename from linux-2.6.9-xen-sparse/drivers/xen/privcmd/privcmd.c rename to linux-2.6.10-rc2-xen-sparse/drivers/xen/privcmd/privcmd.c diff --git a/linux-2.6.9-xen-sparse/include/asm-generic/pgtable.h b/linux-2.6.10-rc2-xen-sparse/include/asm-generic/pgtable.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-generic/pgtable.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-generic/pgtable.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/desc.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/desc.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/desc.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/desc.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/dma-mapping.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/fixmap.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/fixmap.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/floppy.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/floppy.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/floppy.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/floppy.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/highmem.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/highmem.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/highmem.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h similarity index 99% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h index 0a2de0bb92..ea7e5c1494 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h +++ b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/io.h @@ -191,6 +191,8 @@ static inline void writel(unsigned int b, volatile void __iomem *addr) #define __raw_writew writew #define __raw_writel writel +#define mmiowb() + static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count) { memset((void __force *) addr, val, count); diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/irq_vectors.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mmu_context.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mmu_context.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/mmu_context.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/mmu_context.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/msr.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/msr.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/msr.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/msr.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h similarity index 99% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h index dcea67475a..32ccd0d17e 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/page.h +++ b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/page.h @@ -74,9 +74,9 @@ static inline unsigned long machine_to_phys(unsigned long machine) /* * These are used to make use of C type-checking.. */ +extern int nx_enabled; #ifdef CONFIG_X86_PAE extern unsigned long long __supported_pte_mask; -extern int nx_enabled; typedef struct { unsigned long pte_low, pte_high; } pte_t; typedef struct { unsigned long long pmd; } pmd_t; typedef struct { unsigned long long pgd; } pgd_t; @@ -84,7 +84,6 @@ typedef struct { unsigned long long pgprot; } pgprot_t; #define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) #define HPAGE_SHIFT 21 #else -#define nx_enabled 0 typedef struct { unsigned long pte_low; } pte_t; typedef struct { unsigned long pmd; } pmd_t; typedef struct { unsigned long pgd; } pgd_t; @@ -109,6 +108,7 @@ static inline unsigned long pte_val(pte_t x) #define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) #define HPAGE_MASK (~(HPAGE_SIZE - 1)) #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA #endif diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/param.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/param.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/param.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/param.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pci.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pci.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pci.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pci.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgalloc.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgalloc.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgalloc.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgalloc.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level-defs.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/pgtable.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/pgtable.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h similarity index 99% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h index e1aaf0020f..53b71d3113 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/processor.h +++ b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/processor.h @@ -101,6 +101,7 @@ extern char ignore_fpu_irq; extern void identify_cpu(struct cpuinfo_x86 *); extern void print_cpu_info(struct cpuinfo_x86 *); +extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c); extern void dodgy_tsc(void); /* @@ -670,4 +671,6 @@ extern void select_idle_routine(const struct cpuinfo_x86 *c); #define cache_line_size() (boot_cpu_data.x86_cache_alignment) +extern unsigned long boot_option_idle_override; + #endif /* __ASM_I386_PROCESSOR_H */ diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/ptrace.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/ptrace.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/ptrace.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/ptrace.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/segment.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/segment.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/segment.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/segment.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/setup.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/setup.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/setup.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/setup.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/synch_bitops.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h similarity index 99% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h index 133f1eaf49..10e392b990 100644 --- a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/system.h +++ b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/system.h @@ -320,7 +320,7 @@ struct alt_instr { * If you use variable sized constraints like "m" or "g" in the * replacement maake sure to pad to the worst case length. */ -#define alternative_input(oldinstr, newinstr, feature, input) \ +#define alternative_input(oldinstr, newinstr, feature, input...) \ asm volatile ("661:\n\t" oldinstr "\n662:\n" \ ".section .altinstructions,\"a\"\n" \ " .align 4\n" \ @@ -332,7 +332,7 @@ struct alt_instr { ".previous\n" \ ".section .altinstr_replacement,\"ax\"\n" \ "663:\n\t" newinstr "\n664:\n" /* replacement */ \ - ".previous" :: "i" (feature), input) + ".previous" :: "i" (feature), ##input) /* * Force strict CPU ordering. diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/tlbflush.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/tlbflush.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/tlbflush.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/tlbflush.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/vga.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/vga.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/vga.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/vga.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/xor.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/xor.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/xor.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/asm-i386/xor.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/ctrl_if.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/ctrl_if.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/ctrl_if.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/ctrl_if.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/evtchn.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/evtchn.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/evtchn.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/evtchn.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/foreign_page.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/foreign_page.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/foreign_page.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/foreign_page.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/gnttab.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/gnttab.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/gnttab.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/gnttab.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/hypervisor.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/hypervisor.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/hypervisor.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/linux-public/privcmd.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/privcmd.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/linux-public/privcmd.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/privcmd.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/linux-public/suspend.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/suspend.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/linux-public/suspend.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/linux-public/suspend.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/multicall.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/multicall.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/multicall.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/multicall.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/queues.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/queues.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/queues.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/queues.h diff --git a/linux-2.6.9-xen-sparse/include/asm-xen/xen_proc.h b/linux-2.6.10-rc2-xen-sparse/include/asm-xen/xen_proc.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/asm-xen/xen_proc.h rename to linux-2.6.10-rc2-xen-sparse/include/asm-xen/xen_proc.h diff --git a/linux-2.6.9-xen-sparse/include/linux/gfp.h b/linux-2.6.10-rc2-xen-sparse/include/linux/gfp.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/linux/gfp.h rename to linux-2.6.10-rc2-xen-sparse/include/linux/gfp.h diff --git a/linux-2.6.9-xen-sparse/include/linux/skbuff.h b/linux-2.6.10-rc2-xen-sparse/include/linux/skbuff.h similarity index 100% rename from linux-2.6.9-xen-sparse/include/linux/skbuff.h rename to linux-2.6.10-rc2-xen-sparse/include/linux/skbuff.h diff --git a/linux-2.6.9-xen-sparse/mkbuildtree b/linux-2.6.10-rc2-xen-sparse/mkbuildtree similarity index 100% rename from linux-2.6.9-xen-sparse/mkbuildtree rename to linux-2.6.10-rc2-xen-sparse/mkbuildtree diff --git a/linux-2.6.9-xen-sparse/mm/memory.c b/linux-2.6.10-rc2-xen-sparse/mm/memory.c similarity index 97% rename from linux-2.6.9-xen-sparse/mm/memory.c rename to linux-2.6.10-rc2-xen-sparse/mm/memory.c index ffd40c5efe..ab415463d9 100644 --- a/linux-2.6.9-xen-sparse/mm/memory.c +++ b/linux-2.6.10-rc2-xen-sparse/mm/memory.c @@ -114,6 +114,7 @@ static inline void free_one_pmd(struct mmu_gather *tlb, pmd_t * dir) page = pmd_page(*dir); pmd_clear(dir); dec_page_state(nr_page_table_pages); + tlb->mm->nr_ptes--; pte_free_tlb(tlb, page); } @@ -163,7 +164,6 @@ pte_t fastcall * pte_alloc_map(struct mm_struct *mm, pmd_t *pmd, unsigned long a spin_lock(&mm->page_table_lock); if (!new) return NULL; - /* * Because we dropped the lock, we should re-check the * entry, as somebody else could have populated it.. @@ -172,6 +172,7 @@ pte_t fastcall * pte_alloc_map(struct mm_struct *mm, pmd_t *pmd, unsigned long a pte_free(new); goto out; } + mm->nr_ptes++; inc_page_state(nr_page_table_pages); pmd_populate(mm, pmd, new); } @@ -288,8 +289,15 @@ skip_copy_pte_range: goto cont_copy_pte_range_noset; /* pte contains position in swap, so copy. */ if (!pte_present(pte)) { - if (!pte_file(pte)) + if (!pte_file(pte)) { swap_duplicate(pte_to_swp_entry(pte)); + if (list_empty(&dst->mmlist)) { + spin_lock(&mmlist_lock); + list_add(&dst->mmlist, + &src->mmlist); + spin_unlock(&mmlist_lock); + } + } set_pte(dst_pte, pte); goto cont_copy_pte_range_noset; } @@ -326,6 +334,8 @@ skip_copy_pte_range: pte = pte_mkold(pte); get_page(page); dst->rss++; + if (PageAnon(page)) + dst->anon_rss++; set_pte(dst_pte, pte); page_dup_rmap(page); cont_copy_pte_range_noset: @@ -416,7 +426,9 @@ static void zap_pte_range(struct mmu_gather *tlb, set_pte(ptep, pgoff_to_pte(page->index)); if (pte_dirty(pte)) set_page_dirty(page); - if (pte_young(pte) && !PageAnon(page)) + if (PageAnon(page)) + tlb->mm->anon_rss--; + else if (pte_young(pte)) mark_page_accessed(page); tlb->freed++; page_remove_rmap(page); @@ -910,16 +922,14 @@ int zeromap_page_range(struct vm_area_struct *vma, unsigned long address, unsign * in null mappings (currently treated as "copy-on-access") */ static inline void remap_pte_range(pte_t * pte, unsigned long address, unsigned long size, - unsigned long phys_addr, pgprot_t prot) + unsigned long pfn, pgprot_t prot) { unsigned long end; - unsigned long pfn; address &= ~PMD_MASK; end = address + size; if (end > PMD_SIZE) end = PMD_SIZE; - pfn = phys_addr >> PAGE_SHIFT; do { BUG_ON(!pte_none(*pte)); if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn))) @@ -931,7 +941,7 @@ static inline void remap_pte_range(pte_t * pte, unsigned long address, unsigned } static inline int remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned long address, unsigned long size, - unsigned long phys_addr, pgprot_t prot) + unsigned long pfn, pgprot_t prot) { unsigned long base, end; @@ -940,12 +950,12 @@ static inline int remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned lo end = address + size; if (end > PGDIR_SIZE) end = PGDIR_SIZE; - phys_addr -= address; + pfn -= address >> PAGE_SHIFT; do { pte_t * pte = pte_alloc_map(mm, pmd, base + address); if (!pte) return -ENOMEM; - remap_pte_range(pte, base + address, end - address, address + phys_addr, prot); + remap_pte_range(pte, base + address, end - address, pfn + (address >> PAGE_SHIFT), prot); pte_unmap(pte); address = (address + PMD_SIZE) & PMD_MASK; pmd++; @@ -954,7 +964,7 @@ static inline int remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned lo } /* Note: this is only safe if the mm semaphore is held when called. */ -int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot) +int remap_pfn_range(struct vm_area_struct *vma, unsigned long from, unsigned long pfn, unsigned long size, pgprot_t prot) { int error = 0; pgd_t * dir; @@ -962,19 +972,28 @@ int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned lo unsigned long end = from + size; struct mm_struct *mm = vma->vm_mm; - phys_addr -= from; + pfn -= from >> PAGE_SHIFT; dir = pgd_offset(mm, from); flush_cache_range(vma, beg, end); if (from >= end) BUG(); + /* + * Physically remapped pages are special. Tell the + * rest of the world about it: + * VM_IO tells people not to look at these pages + * (accesses can have side effects). + * VM_RESERVED tells swapout not to try to touch + * this region. + */ + vma->vm_flags |= VM_IO | VM_RESERVED; spin_lock(&mm->page_table_lock); do { pmd_t *pmd = pmd_alloc(mm, dir, from); error = -ENOMEM; if (!pmd) break; - error = remap_pmd_range(mm, pmd, from, end - from, phys_addr + from, prot); + error = remap_pmd_range(mm, pmd, from, end - from, pfn + (from >> PAGE_SHIFT), prot); if (error) break; from = (from + PGDIR_SIZE) & PGDIR_MASK; @@ -987,8 +1006,7 @@ int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned lo spin_unlock(&mm->page_table_lock); return error; } - -EXPORT_SYMBOL(remap_page_range); +EXPORT_SYMBOL(remap_pfn_range); /* * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when @@ -1095,6 +1113,8 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct * vma, spin_lock(&mm->page_table_lock); page_table = pte_offset_map(pmd, address); if (likely(pte_same(*page_table, pte))) { + if (PageAnon(old_page)) + mm->anon_rss--; if (PageReserved(old_page)) ++mm->rss; else @@ -1236,7 +1256,7 @@ int vmtruncate(struct inode * inode, loff_t offset) goto out_truncate; do_expand: - limit = current->rlim[RLIMIT_FSIZE].rlim_cur; + limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; if (limit != RLIM_INFINITY && offset > limit) goto out_sig; if (offset > inode->i_sb->s_maxbytes) @@ -1773,13 +1793,11 @@ struct page * vmalloc_to_page(void * vmalloc_addr) if (!pgd_none(*pgd)) { pmd = pmd_offset(pgd, addr); if (!pmd_none(*pmd)) { - preempt_disable(); ptep = pte_offset_map(pmd, addr); pte = *ptep; if (pte_present(pte)) page = pte_page(pte); pte_unmap(ptep); - preempt_enable(); } } return page; @@ -1787,6 +1805,16 @@ struct page * vmalloc_to_page(void * vmalloc_addr) EXPORT_SYMBOL(vmalloc_to_page); +/* + * Map a vmalloc()-space virtual address to the physical page frame number. + */ +unsigned long vmalloc_to_pfn(void * vmalloc_addr) +{ + return page_to_pfn(vmalloc_to_page(vmalloc_addr)); +} + +EXPORT_SYMBOL(vmalloc_to_pfn); + #if !defined(CONFIG_ARCH_GATE_AREA) #if defined(AT_SYSINFO_EHDR) diff --git a/linux-2.6.9-xen-sparse/mm/page_alloc.c b/linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c similarity index 99% rename from linux-2.6.9-xen-sparse/mm/page_alloc.c rename to linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c index ce900f5015..ff73d875d6 100644 --- a/linux-2.6.9-xen-sparse/mm/page_alloc.c +++ b/linux-2.6.10-rc2-xen-sparse/mm/page_alloc.c @@ -31,10 +31,12 @@ #include #include #include +#include #include -DECLARE_BITMAP(node_online_map, MAX_NUMNODES); +nodemask_t node_online_map = NODE_MASK_NONE; +nodemask_t node_possible_map = NODE_MASK_ALL; struct pglist_data *pgdat_list; unsigned long totalram_pages; unsigned long totalhigh_pages; @@ -92,6 +94,7 @@ static void bad_page(const char *function, struct page *page) set_page_count(page, 0); reset_page_mapcount(page); page->mapping = NULL; + tainted |= TAINT_BAD_PAGE; } #ifndef CONFIG_HUGETLB_PAGE @@ -1102,6 +1105,8 @@ void show_free_areas(void) " active:%lukB" " inactive:%lukB" " present:%lukB" + " pages_scanned:%lu" + " all_unreclaimable? %s" "\n", zone->name, K(zone->free_pages), @@ -1110,7 +1115,9 @@ void show_free_areas(void) K(zone->pages_high), K(zone->nr_active), K(zone->nr_inactive), - K(zone->present_pages) + K(zone->present_pages), + zone->pages_scanned, + (zone->all_unreclaimable ? "yes" : "no") ); printk("protections[]:"); for (i = 0; i < MAX_NR_ZONES; i++) @@ -1208,6 +1215,12 @@ static int __init find_next_best_node(int node, void *used_node_mask) if (test_bit(n, used_node_mask)) continue; + /* Use the local node if we haven't already */ + if (!test_bit(node, used_node_mask)) { + best_node = node; + break; + } + /* Use the distance array to find the distance */ val = node_distance(node, n); diff --git a/linux-2.6.9-xen-sparse/net/core/skbuff.c b/linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c similarity index 99% rename from linux-2.6.9-xen-sparse/net/core/skbuff.c rename to linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c index 41b512c5ff..69bca06918 100644 --- a/linux-2.6.9-xen-sparse/net/core/skbuff.c +++ b/linux-2.6.10-rc2-xen-sparse/net/core/skbuff.c @@ -447,6 +447,8 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) new->tc_index = old->tc_index; #endif atomic_set(&new->users, 1); + skb_shinfo(new)->tso_size = skb_shinfo(old)->tso_size; + skb_shinfo(new)->tso_segs = skb_shinfo(old)->tso_segs; } /** @@ -536,8 +538,6 @@ struct sk_buff *pskb_copy(struct sk_buff *skb, int gfp_mask) } skb_shinfo(n)->nr_frags = i; } - skb_shinfo(n)->tso_size = skb_shinfo(skb)->tso_size; - skb_shinfo(n)->tso_segs = skb_shinfo(skb)->tso_segs; if (skb_shinfo(skb)->frag_list) { skb_shinfo(n)->frag_list = skb_shinfo(skb)->frag_list; @@ -684,8 +684,6 @@ struct sk_buff *skb_copy_expand(const struct sk_buff *skb, BUG(); copy_skb_header(n, skb); - skb_shinfo(n)->tso_size = skb_shinfo(skb)->tso_size; - skb_shinfo(n)->tso_segs = skb_shinfo(skb)->tso_segs; return n; } diff --git a/linux-2.6.9-xen-sparse/net/ipv4/raw.c b/linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c similarity index 99% rename from linux-2.6.9-xen-sparse/net/ipv4/raw.c rename to linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c index 4796250642..fdcaca89b8 100644 --- a/linux-2.6.9-xen-sparse/net/ipv4/raw.c +++ b/linux-2.6.10-rc2-xen-sparse/net/ipv4/raw.c @@ -410,7 +410,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, printk(KERN_INFO "%s forgot to set AF_INET in " "raw sendmsg. Fix it!\n", current->comm); - err = -EINVAL; + err = -EAFNOSUPPORT; if (usin->sin_family) goto out; } diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c deleted file mode 100644 index c23ea80fb5..0000000000 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/irq.c +++ /dev/null @@ -1,1161 +0,0 @@ -/* - * linux/arch/i386/kernel/irq.c - * - * Copyright (C) 1992, 1998 Linus Torvalds, Ingo Molnar - * - * This file contains the code used by various IRQ handling routines: - * asking for different IRQ's should be done through these routines - * instead of just grabbing them. Thus setups with different IRQ numbers - * shouldn't result in any weird surprises, and installing new handlers - * should be easier. - */ - -/* - * (mostly architecture independent, will move to kernel/irq.c in 2.5.) - * - * IRQs are in fact implemented a bit like signal handlers for the kernel. - * Naturally it's not a 1:1 relation, but there are similarities. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Linux has a controller-independent x86 interrupt architecture. - * every controller has a 'controller-template', that is used - * by the main code to do the right thing. Each driver-visible - * interrupt source is transparently wired to the apropriate - * controller. Thus drivers need not be aware of the - * interrupt-controller. - * - * Various interrupt controllers we handle: 8259 PIC, SMP IO-APIC, - * PIIX4's internal 8259 PIC and SGI's Visual Workstation Cobalt (IO-)APIC. - * (IO-APICs assumed to be messaging to Pentium local-APICs) - * - * the code is designed to be easily extended with new/different - * interrupt controllers, without having to do assembly magic. - */ - -/* - * Controller mappings for all interrupt sources: - */ -irq_desc_t irq_desc[NR_IRQS] __cacheline_aligned = { - [0 ... NR_IRQS-1] = { - .handler = &no_irq_type, - .lock = SPIN_LOCK_UNLOCKED - } -}; - -static void register_irq_proc (unsigned int irq); - -/* - * per-CPU IRQ handling stacks - */ -#ifdef CONFIG_4KSTACKS -union irq_ctx *hardirq_ctx[NR_CPUS]; -union irq_ctx *softirq_ctx[NR_CPUS]; -#endif - -/* - * Special irq handlers. - */ - -irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) -{ return IRQ_NONE; } - -/* - * Generic no controller code - */ - -static void enable_none(unsigned int irq) { } -static unsigned int startup_none(unsigned int irq) { return 0; } -static void disable_none(unsigned int irq) { } -static void ack_none(unsigned int irq) -{ -/* - * 'what should we do if we get a hw irq event on an illegal vector'. - * each architecture has to answer this themselves, it doesn't deserve - * a generic callback i think. - */ -#ifdef CONFIG_X86 - printk("unexpected IRQ trap at vector %02x\n", irq); -#ifdef CONFIG_X86_LOCAL_APIC - /* - * Currently unexpected vectors happen only on SMP and APIC. - * We _must_ ack these because every local APIC has only N - * irq slots per priority level, and a 'hanging, unacked' IRQ - * holds up an irq slot - in excessive cases (when multiple - * unexpected vectors occur) that might lock up the APIC - * completely. - */ - ack_APIC_irq(); -#endif -#endif -} - -/* startup is the same as "enable", shutdown is same as "disable" */ -#define shutdown_none disable_none -#define end_none enable_none - -struct hw_interrupt_type no_irq_type = { - "none", - startup_none, - shutdown_none, - enable_none, - disable_none, - ack_none, - end_none -}; - -atomic_t irq_err_count; -#if defined(CONFIG_X86_IO_APIC) && defined(APIC_MISMATCH_DEBUG) -atomic_t irq_mis_count; -#endif - -/* - * Generic, controller-independent functions: - */ - -int show_interrupts(struct seq_file *p, void *v) -{ - int i = *(loff_t *) v, j; - struct irqaction * action; - unsigned long flags; - - if (i == 0) { - seq_printf(p, " "); - for (j=0; jtypename); - seq_printf(p, " %s", action->name); - - for (action=action->next; action; action = action->next) - seq_printf(p, ", %s", action->name); - - seq_putc(p, '\n'); -skip: - spin_unlock_irqrestore(&irq_desc[i].lock, flags); - } else if (i == NR_IRQS) { - seq_printf(p, "NMI: "); - for (j = 0; j < NR_CPUS; j++) - if (cpu_online(j)) - seq_printf(p, "%10u ", nmi_count(j)); - seq_putc(p, '\n'); -#ifdef CONFIG_X86_LOCAL_APIC - seq_printf(p, "LOC: "); - for (j = 0; j < NR_CPUS; j++) - if (cpu_online(j)) - seq_printf(p, "%10u ", irq_stat[j].apic_timer_irqs); - seq_putc(p, '\n'); -#endif - seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); -#if defined(CONFIG_X86_IO_APIC) && defined(APIC_MISMATCH_DEBUG) - seq_printf(p, "MIS: %10u\n", atomic_read(&irq_mis_count)); -#endif - } - return 0; -} - - - - -#ifdef CONFIG_SMP -inline void synchronize_irq(unsigned int irq) -{ - while (irq_desc[irq].status & IRQ_INPROGRESS) - cpu_relax(); -} -#endif - -/* - * This should really return information about whether - * we should do bottom half handling etc. Right now we - * end up _always_ checking the bottom half, which is a - * waste of time and is not what some drivers would - * prefer. - */ -asmlinkage int handle_IRQ_event(unsigned int irq, - struct pt_regs *regs, struct irqaction *action) -{ - int status = 1; /* Force the "do bottom halves" bit */ - int ret, retval = 0; - - if (!(action->flags & SA_INTERRUPT)) - local_irq_enable(); - - do { - ret = action->handler(irq, action->dev_id, regs); - if (ret == IRQ_HANDLED) - status |= action->flags; - retval |= ret; - action = action->next; - } while (action); - if (status & SA_SAMPLE_RANDOM) - add_interrupt_randomness(irq); - local_irq_disable(); - return retval; -} - -static void __report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) -{ - struct irqaction *action; - - if (action_ret != IRQ_HANDLED && action_ret != IRQ_NONE) { - printk(KERN_ERR "irq event %d: bogus return value %x\n", - irq, action_ret); - } else { - printk(KERN_ERR "irq %d: nobody cared!\n", irq); - } - dump_stack(); - printk(KERN_ERR "handlers:\n"); - action = desc->action; - do { - printk(KERN_ERR "[<%p>]", action->handler); - print_symbol(" (%s)", - (unsigned long)action->handler); - printk("\n"); - action = action->next; - } while (action); -} - -static void report_bad_irq(int irq, irq_desc_t *desc, irqreturn_t action_ret) -{ - static int count = 100; - - if (count) { - count--; - __report_bad_irq(irq, desc, action_ret); - } -} - -static int noirqdebug; - -static int __init noirqdebug_setup(char *str) -{ - noirqdebug = 1; - printk("IRQ lockup detection disabled\n"); - return 1; -} - -__setup("noirqdebug", noirqdebug_setup); - -/* - * If 99,900 of the previous 100,000 interrupts have not been handled then - * assume that the IRQ is stuck in some manner. Drop a diagnostic and try to - * turn the IRQ off. - * - * (The other 100-of-100,000 interrupts may have been a correctly-functioning - * device sharing an IRQ with the failing one) - * - * Called under desc->lock - */ -static void note_interrupt(int irq, irq_desc_t *desc, irqreturn_t action_ret) -{ - if (action_ret != IRQ_HANDLED) { - desc->irqs_unhandled++; - if (action_ret != IRQ_NONE) - report_bad_irq(irq, desc, action_ret); - } - - desc->irq_count++; - if (desc->irq_count < 100000) - return; - - desc->irq_count = 0; - if (desc->irqs_unhandled > 99900) { - /* - * The interrupt is stuck - */ - __report_bad_irq(irq, desc, action_ret); - /* - * Now kill the IRQ - */ - printk(KERN_EMERG "Disabling IRQ #%d\n", irq); - desc->status |= IRQ_DISABLED; - desc->handler->disable(irq); - } - desc->irqs_unhandled = 0; -} - -/* - * Generic enable/disable code: this just calls - * down into the PIC-specific version for the actual - * hardware disable after having gotten the irq - * controller lock. - */ - -/** - * disable_irq_nosync - disable an irq without waiting - * @irq: Interrupt to disable - * - * Disable the selected interrupt line. Disables and Enables are - * nested. - * Unlike disable_irq(), this function does not ensure existing - * instances of the IRQ handler have completed before returning. - * - * This function may be called from IRQ context. - */ - -inline void disable_irq_nosync(unsigned int irq) -{ - irq_desc_t *desc = irq_desc + irq; - unsigned long flags; - - spin_lock_irqsave(&desc->lock, flags); - if (!desc->depth++) { - desc->status |= IRQ_DISABLED; - desc->handler->disable(irq); - } - spin_unlock_irqrestore(&desc->lock, flags); -} - -/** - * disable_irq - disable an irq and wait for completion - * @irq: Interrupt to disable - * - * Disable the selected interrupt line. Enables and Disables are - * nested. - * This function waits for any pending IRQ handlers for this interrupt - * to complete before returning. If you use this function while - * holding a resource the IRQ handler may need you will deadlock. - * - * This function may be called - with care - from IRQ context. - */ - -void disable_irq(unsigned int irq) -{ - irq_desc_t *desc = irq_desc + irq; - disable_irq_nosync(irq); - if (desc->action) - synchronize_irq(irq); -} - -/** - * enable_irq - enable handling of an irq - * @irq: Interrupt to enable - * - * Undoes the effect of one call to disable_irq(). If this - * matches the last disable, processing of interrupts on this - * IRQ line is re-enabled. - * - * This function may be called from IRQ context. - */ - -void enable_irq(unsigned int irq) -{ - irq_desc_t *desc = irq_desc + irq; - unsigned long flags; - - spin_lock_irqsave(&desc->lock, flags); - switch (desc->depth) { - case 1: { - unsigned int status = desc->status & ~IRQ_DISABLED; - desc->status = status; - if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { - desc->status = status | IRQ_REPLAY; - hw_resend_irq(desc->handler,irq); - } - desc->handler->enable(irq); - /* fall-through */ - } - default: - desc->depth--; - break; - case 0: - printk("enable_irq(%u) unbalanced from %p\n", irq, - __builtin_return_address(0)); - } - spin_unlock_irqrestore(&desc->lock, flags); -} - -/* - * do_IRQ handles all normal device IRQ's (the special - * SMP cross-CPU interrupts have their own specific - * handlers). - */ -asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) -{ - /* - * We ack quickly, we don't want the irq controller - * thinking we're snobs just because some other CPU has - * disabled global interrupts (we have already done the - * INT_ACK cycles, it's too late to try to pretend to the - * controller that we aren't taking the interrupt). - * - * 0 return value means that this irq is already being - * handled by some other CPU. (or is disabled) - */ - irq_desc_t *desc = irq_desc + irq; - struct irqaction * action; - unsigned int status; - - irq_enter(); - -#ifdef CONFIG_DEBUG_STACKOVERFLOW - /* Debugging check for stack overflow: is there less than 1KB free? */ - { - long esp; - - __asm__ __volatile__("andl %%esp,%0" : - "=r" (esp) : "0" (THREAD_SIZE - 1)); - if (unlikely(esp < (sizeof(struct thread_info) + STACK_WARN))) { - printk("do_IRQ: stack overflow: %ld\n", - esp - sizeof(struct thread_info)); - dump_stack(); - } - } -#endif - kstat_this_cpu.irqs[irq]++; - spin_lock(&desc->lock); - desc->handler->ack(irq); - /* - REPLAY is when Linux resends an IRQ that was dropped earlier - WAITING is used by probe to mark irqs that are being tested - */ - status = desc->status & ~(IRQ_REPLAY | IRQ_WAITING); - status |= IRQ_PENDING; /* we _want_ to handle it */ - - /* - * If the IRQ is disabled for whatever reason, we cannot - * use the action we have. - */ - action = NULL; - if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) { - action = desc->action; - status &= ~IRQ_PENDING; /* we commit to handling */ - status |= IRQ_INPROGRESS; /* we are handling it */ - } - desc->status = status; - - /* - * If there is no IRQ handler or it was disabled, exit early. - Since we set PENDING, if another processor is handling - a different instance of this same irq, the other processor - will take care of it. - */ - if (unlikely(!action)) - goto out; - - /* - * Edge triggered interrupts need to remember - * pending events. - * This applies to any hw interrupts that allow a second - * instance of the same irq to arrive while we are in do_IRQ - * or in the handler. But the code here only handles the _second_ - * instance of the irq, not the third or fourth. So it is mostly - * useful for irq hardware that does not mask cleanly in an - * SMP environment. - */ -#ifdef CONFIG_4KSTACKS - - for (;;) { - irqreturn_t action_ret; - u32 *isp; - union irq_ctx * curctx; - union irq_ctx * irqctx; - - curctx = (union irq_ctx *) current_thread_info(); - irqctx = hardirq_ctx[smp_processor_id()]; - - spin_unlock(&desc->lock); - - /* - * this is where we switch to the IRQ stack. However, if we are already using - * the IRQ stack (because we interrupted a hardirq handler) we can't do that - * and just have to keep using the current stack (which is the irq stack already - * after all) - */ - - if (curctx == irqctx) - action_ret = handle_IRQ_event(irq, regs, action); - else { - /* build the stack frame on the IRQ stack */ - isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); - irqctx->tinfo.task = curctx->tinfo.task; - irqctx->tinfo.previous_esp = current_stack_pointer(); - - *--isp = (u32) action; - *--isp = (u32) regs; - *--isp = (u32) irq; - - asm volatile( - " xchgl %%ebx,%%esp \n" - " call handle_IRQ_event \n" - " xchgl %%ebx,%%esp \n" - : "=a"(action_ret) - : "b"(isp) - : "memory", "cc", "edx", "ecx" - ); - - - } - spin_lock(&desc->lock); - if (!noirqdebug) - note_interrupt(irq, desc, action_ret); - if (curctx != irqctx) - irqctx->tinfo.task = NULL; - if (likely(!(desc->status & IRQ_PENDING))) - break; - desc->status &= ~IRQ_PENDING; - } - -#else - - for (;;) { - irqreturn_t action_ret; - - spin_unlock(&desc->lock); - - action_ret = handle_IRQ_event(irq, regs, action); - - spin_lock(&desc->lock); - if (!noirqdebug) - note_interrupt(irq, desc, action_ret); - if (likely(!(desc->status & IRQ_PENDING))) - break; - desc->status &= ~IRQ_PENDING; - } -#endif - desc->status &= ~IRQ_INPROGRESS; - -out: - /* - * The ->end() handler has to deal with interrupts which got - * disabled while the handler was running. - */ - desc->handler->end(irq); - spin_unlock(&desc->lock); - - irq_exit(); - - return 1; -} - -int can_request_irq(unsigned int irq, unsigned long irqflags) -{ - struct irqaction *action; - - if (irq >= NR_IRQS) - return 0; - action = irq_desc[irq].action; - if (action) { - if (irqflags & action->flags & SA_SHIRQ) - action = NULL; - } - return !action; -} - -/** - * request_irq - allocate an interrupt line - * @irq: Interrupt line to allocate - * @handler: Function to be called when the IRQ occurs - * @irqflags: Interrupt type flags - * @devname: An ascii name for the claiming device - * @dev_id: A cookie passed back to the handler function - * - * This call allocates interrupt resources and enables the - * interrupt line and IRQ handling. From the point this - * call is made your handler function may be invoked. Since - * your handler function must clear any interrupt the board - * raises, you must take care both to initialise your hardware - * and to set up the interrupt handler in the right order. - * - * Dev_id must be globally unique. Normally the address of the - * device data structure is used as the cookie. Since the handler - * receives this value it makes sense to use it. - * - * If your interrupt is shared you must pass a non NULL dev_id - * as this is required when freeing the interrupt. - * - * Flags: - * - * SA_SHIRQ Interrupt is shared - * - * SA_INTERRUPT Disable local interrupts while processing - * - * SA_SAMPLE_RANDOM The interrupt can be used for entropy - * - */ - -int request_irq(unsigned int irq, - irqreturn_t (*handler)(int, void *, struct pt_regs *), - unsigned long irqflags, - const char * devname, - void *dev_id) -{ - int retval; - struct irqaction * action; - -#if 1 - /* - * Sanity-check: shared interrupts should REALLY pass in - * a real dev-ID, otherwise we'll have trouble later trying - * to figure out which interrupt is which (messes up the - * interrupt freeing logic etc). - */ - if (irqflags & SA_SHIRQ) { - if (!dev_id) - printk("Bad boy: %s (at 0x%x) called us without a dev_id!\n", devname, (&irq)[-1]); - } -#endif - - if (irq >= NR_IRQS) - return -EINVAL; - if (!handler) - return -EINVAL; - - action = (struct irqaction *) - kmalloc(sizeof(struct irqaction), GFP_ATOMIC); - if (!action) - return -ENOMEM; - - action->handler = handler; - action->flags = irqflags; - cpus_clear(action->mask); - action->name = devname; - action->next = NULL; - action->dev_id = dev_id; - - retval = setup_irq(irq, action); - if (retval) - kfree(action); - return retval; -} - -EXPORT_SYMBOL(request_irq); - -/** - * free_irq - free an interrupt - * @irq: Interrupt line to free - * @dev_id: Device identity to free - * - * Remove an interrupt handler. The handler is removed and if the - * interrupt line is no longer in use by any driver it is disabled. - * On a shared IRQ the caller must ensure the interrupt is disabled - * on the card it drives before calling this function. The function - * does not return until any executing interrupts for this IRQ - * have completed. - * - * This function must not be called from interrupt context. - */ - -void free_irq(unsigned int irq, void *dev_id) -{ - irq_desc_t *desc; - struct irqaction **p; - unsigned long flags; - - if (irq >= NR_IRQS) - return; - - desc = irq_desc + irq; - spin_lock_irqsave(&desc->lock,flags); - p = &desc->action; - for (;;) { - struct irqaction * action = *p; - - if (action) { - struct irqaction **pp = p; - p = &action->next; - if (action->dev_id != dev_id) - continue; - - /* Found it - now remove it from the list of entries */ - *pp = action->next; - if (!desc->action) { - desc->status |= IRQ_DISABLED; - desc->handler->shutdown(irq); - } - spin_unlock_irqrestore(&desc->lock,flags); - - /* Wait to make sure it's not being used on another CPU */ - synchronize_irq(irq); - -#define SA_STATIC_ACTION 0x01000000 /* Is it our duty to free the action? */ - if (!(action->flags & SA_STATIC_ACTION)) - kfree(action); - return; - } - printk("Trying to free free IRQ%d\n",irq); - spin_unlock_irqrestore(&desc->lock,flags); - return; - } -} - -EXPORT_SYMBOL(free_irq); - -/* - * IRQ autodetection code.. - * - * This depends on the fact that any interrupt that - * comes in on to an unassigned handler will get stuck - * with "IRQ_WAITING" cleared and the interrupt - * disabled. - */ - -static DECLARE_MUTEX(probe_sem); - -/** - * probe_irq_on - begin an interrupt autodetect - * - * Commence probing for an interrupt. The interrupts are scanned - * and a mask of potential interrupt lines is returned. - * - */ - -unsigned long probe_irq_on(void) -{ - unsigned int i; - irq_desc_t *desc; - unsigned long val; - unsigned long delay; - - down(&probe_sem); - /* - * something may have generated an irq long ago and we want to - * flush such a longstanding irq before considering it as spurious. - */ - for (i = NR_PIRQS-1; i > 0; i--) { - desc = irq_desc + i; - - spin_lock_irq(&desc->lock); - if (!irq_desc[i].action) - irq_desc[i].handler->startup(i); - spin_unlock_irq(&desc->lock); - } - - /* Wait for longstanding interrupts to trigger. */ - for (delay = jiffies + HZ/50; time_after(delay, jiffies); ) - /* about 20ms delay */ barrier(); - - /* - * enable any unassigned irqs - * (we must startup again here because if a longstanding irq - * happened in the previous stage, it may have masked itself) - */ - for (i = NR_PIRQS-1; i > 0; i--) { - desc = irq_desc + i; - - spin_lock_irq(&desc->lock); - if (!desc->action) { - desc->status |= IRQ_AUTODETECT | IRQ_WAITING; - if (desc->handler->startup(i)) - desc->status |= IRQ_PENDING; - } - spin_unlock_irq(&desc->lock); - } - - /* - * Wait for spurious interrupts to trigger - */ - for (delay = jiffies + HZ/10; time_after(delay, jiffies); ) - /* about 100ms delay */ barrier(); - - /* - * Now filter out any obviously spurious interrupts - */ - val = 0; - for (i = 0; i < NR_PIRQS; i++) { - irq_desc_t *desc = irq_desc + i; - unsigned int status; - - spin_lock_irq(&desc->lock); - status = desc->status; - - if (status & IRQ_AUTODETECT) { - /* It triggered already - consider it spurious. */ - if (!(status & IRQ_WAITING)) { - desc->status = status & ~IRQ_AUTODETECT; - desc->handler->shutdown(i); - } else - if (i < 32) - val |= 1 << i; - } - spin_unlock_irq(&desc->lock); - } - - return val; -} - -EXPORT_SYMBOL(probe_irq_on); - -/* - * Return a mask of triggered interrupts (this - * can handle only legacy ISA interrupts). - */ - -/** - * probe_irq_mask - scan a bitmap of interrupt lines - * @val: mask of interrupts to consider - * - * Scan the ISA bus interrupt lines and return a bitmap of - * active interrupts. The interrupt probe logic state is then - * returned to its previous value. - * - * Note: we need to scan all the irq's even though we will - * only return ISA irq numbers - just so that we reset them - * all to a known state. - */ -unsigned int probe_irq_mask(unsigned long val) -{ - int i; - unsigned int mask; - - mask = 0; - for (i = 0; i < NR_PIRQS; i++) { - irq_desc_t *desc = irq_desc + i; - unsigned int status; - - spin_lock_irq(&desc->lock); - status = desc->status; - - if (status & IRQ_AUTODETECT) { - if (i < 16 && !(status & IRQ_WAITING)) - mask |= 1 << i; - - desc->status = status & ~IRQ_AUTODETECT; - desc->handler->shutdown(i); - } - spin_unlock_irq(&desc->lock); - } - up(&probe_sem); - - return mask & val; -} - -/* - * Return the one interrupt that triggered (this can - * handle any interrupt source). - */ - -/** - * probe_irq_off - end an interrupt autodetect - * @val: mask of potential interrupts (unused) - * - * Scans the unused interrupt lines and returns the line which - * appears to have triggered the interrupt. If no interrupt was - * found then zero is returned. If more than one interrupt is - * found then minus the first candidate is returned to indicate - * their is doubt. - * - * The interrupt probe logic state is returned to its previous - * value. - * - * BUGS: When used in a module (which arguably shouldnt happen) - * nothing prevents two IRQ probe callers from overlapping. The - * results of this are non-optimal. - */ - -int probe_irq_off(unsigned long val) -{ - int i, irq_found, nr_irqs; - - nr_irqs = 0; - irq_found = 0; - for (i = 0; i < NR_PIRQS; i++) { - irq_desc_t *desc = irq_desc + i; - unsigned int status; - - spin_lock_irq(&desc->lock); - status = desc->status; - - if (status & IRQ_AUTODETECT) { - if (!(status & IRQ_WAITING)) { - if (!nr_irqs) - irq_found = i; - nr_irqs++; - } - desc->status = status & ~IRQ_AUTODETECT; - desc->handler->shutdown(i); - } - spin_unlock_irq(&desc->lock); - } - up(&probe_sem); - - if (nr_irqs > 1) - irq_found = -irq_found; - return irq_found; -} - -EXPORT_SYMBOL(probe_irq_off); - -/* this was setup_x86_irq but it seems pretty generic */ -int setup_irq(unsigned int irq, struct irqaction * new) -{ - int shared = 0; - unsigned long flags; - struct irqaction *old, **p; - irq_desc_t *desc = irq_desc + irq; - - if (desc->handler == &no_irq_type) - return -ENOSYS; - /* - * Some drivers like serial.c use request_irq() heavily, - * so we have to be careful not to interfere with a - * running system. - */ - if (new->flags & SA_SAMPLE_RANDOM) { - /* - * This function might sleep, we want to call it first, - * outside of the atomic block. - * Yes, this might clear the entropy pool if the wrong - * driver is attempted to be loaded, without actually - * installing a new handler, but is this really a problem, - * only the sysadmin is able to do this. - */ - rand_initialize_irq(irq); - } - - /* - * The following block of code has to be executed atomically - */ - spin_lock_irqsave(&desc->lock,flags); - p = &desc->action; - if ((old = *p) != NULL) { - /* Can't share interrupts unless both agree to */ - if (!(old->flags & new->flags & SA_SHIRQ)) { - spin_unlock_irqrestore(&desc->lock,flags); - return -EBUSY; - } - - /* add new interrupt at end of irq queue */ - do { - p = &old->next; - old = *p; - } while (old); - shared = 1; - } - - *p = new; - - if (!shared) { - desc->depth = 0; - desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS); - desc->handler->startup(irq); - } - spin_unlock_irqrestore(&desc->lock,flags); - - register_irq_proc(irq); - return 0; -} - -static struct proc_dir_entry * root_irq_dir; -static struct proc_dir_entry * irq_dir [NR_IRQS]; - -#ifdef CONFIG_SMP - -static struct proc_dir_entry *smp_affinity_entry[NR_IRQS]; - -cpumask_t irq_affinity[NR_IRQS] = { [0 ... NR_IRQS-1] = CPU_MASK_ALL }; - -static int irq_affinity_read_proc(char *page, char **start, off_t off, - int count, int *eof, void *data) -{ - int len = cpumask_scnprintf(page, count, irq_affinity[(long)data]); - if (count - len < 2) - return -EINVAL; - len += sprintf(page + len, "\n"); - return len; -} - -static int irq_affinity_write_proc(struct file *file, const char __user *buffer, - unsigned long count, void *data) -{ - int irq = (long)data, full_count = count, err; - cpumask_t new_value, tmp; - - if (!irq_desc[irq].handler->set_affinity) - return -EIO; - - err = cpumask_parse(buffer, count, new_value); - if (err) - return err; - - /* - * Do not allow disabling IRQs completely - it's a too easy - * way to make the system unusable accidentally :-) At least - * one online CPU still has to be targeted. - */ - cpus_and(tmp, new_value, cpu_online_map); - if (cpus_empty(tmp)) - return -EINVAL; - - irq_affinity[irq] = new_value; - irq_desc[irq].handler->set_affinity(irq, - cpumask_of_cpu(first_cpu(new_value))); - - return full_count; -} - -#endif -#define MAX_NAMELEN 10 - -static void register_irq_proc (unsigned int irq) -{ - char name [MAX_NAMELEN]; - - if (!root_irq_dir || (irq_desc[irq].handler == &no_irq_type) || - irq_dir[irq]) - return; - - memset(name, 0, MAX_NAMELEN); - sprintf(name, "%d", irq); - - /* create /proc/irq/1234 */ - irq_dir[irq] = proc_mkdir(name, root_irq_dir); - -#ifdef CONFIG_SMP - { - struct proc_dir_entry *entry; - - /* create /proc/irq/1234/smp_affinity */ - entry = create_proc_entry("smp_affinity", 0600, irq_dir[irq]); - - if (entry) { - entry->nlink = 1; - entry->data = (void *)(long)irq; - entry->read_proc = irq_affinity_read_proc; - entry->write_proc = irq_affinity_write_proc; - } - - smp_affinity_entry[irq] = entry; - } -#endif -} - -void init_irq_proc (void) -{ - int i; - - /* create /proc/irq */ - root_irq_dir = proc_mkdir("irq", NULL); - create_prof_cpu_mask(root_irq_dir); - /* - * Create entries for all existing IRQs. - */ - for (i = 0; i < NR_IRQS; i++) - register_irq_proc(i); -} - - -#ifdef CONFIG_4KSTACKS -/* - * These should really be __section__(".bss.page_aligned") as well, but - * gcc's 3.0 and earlier don't handle that correctly. - */ -static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); -static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE))); - -/* - * allocate per-cpu stacks for hardirq and for softirq processing - */ -void irq_ctx_init(int cpu) -{ - union irq_ctx *irqctx; - - if (hardirq_ctx[cpu]) - return; - - irqctx = (union irq_ctx*) &hardirq_stack[cpu*THREAD_SIZE]; - irqctx->tinfo.task = NULL; - irqctx->tinfo.exec_domain = NULL; - irqctx->tinfo.cpu = cpu; - irqctx->tinfo.preempt_count = HARDIRQ_OFFSET; - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); - - hardirq_ctx[cpu] = irqctx; - - irqctx = (union irq_ctx*) &softirq_stack[cpu*THREAD_SIZE]; - irqctx->tinfo.task = NULL; - irqctx->tinfo.exec_domain = NULL; - irqctx->tinfo.cpu = cpu; - irqctx->tinfo.preempt_count = SOFTIRQ_OFFSET; - irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); - - softirq_ctx[cpu] = irqctx; - - printk("CPU %u irqstacks, hard=%p soft=%p\n", - cpu,hardirq_ctx[cpu],softirq_ctx[cpu]); -} - -extern asmlinkage void __do_softirq(void); - -asmlinkage void do_softirq(void) -{ - unsigned long flags; - struct thread_info *curctx; - union irq_ctx *irqctx; - u32 *isp; - - if (in_interrupt()) - return; - - local_irq_save(flags); - - if (local_softirq_pending()) { - curctx = current_thread_info(); - irqctx = softirq_ctx[smp_processor_id()]; - irqctx->tinfo.task = curctx->task; - irqctx->tinfo.previous_esp = current_stack_pointer(); - - /* build the stack frame on the softirq stack */ - isp = (u32*) ((char*)irqctx + sizeof(*irqctx)); - - - asm volatile( - " xchgl %%ebx,%%esp \n" - " call __do_softirq \n" - " movl %%ebx,%%esp \n" - : "=b"(isp) - : "0"(isp) - : "memory", "cc", "edx", "ecx", "eax" - ); - } - - local_irq_restore(flags); -} - -EXPORT_SYMBOL(do_softirq); -#endif diff --git a/linux-2.6.9-xen-sparse/include/linux/bio.h b/linux-2.6.9-xen-sparse/include/linux/bio.h deleted file mode 100644 index 1f2f504d79..0000000000 --- a/linux-2.6.9-xen-sparse/include/linux/bio.h +++ /dev/null @@ -1,328 +0,0 @@ -/* - * 2.5 block I/O model - * - * Copyright (C) 2001 Jens Axboe - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public Licens - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111- - */ -#ifndef __LINUX_BIO_H -#define __LINUX_BIO_H - -#include -#include - -/* Platforms may set this to teach the BIO layer about IOMMU hardware. */ -#include - -#if defined(BIO_VMERGE_MAX_SIZE) && defined(BIO_VMERGE_BOUNDARY) -#define BIOVEC_VIRT_START_SIZE(x) (bvec_to_phys(x) & (BIO_VMERGE_BOUNDARY - 1)) -#define BIOVEC_VIRT_OVERSIZE(x) ((x) > BIO_VMERGE_MAX_SIZE) -#else -#define BIOVEC_VIRT_START_SIZE(x) 0 -#define BIOVEC_VIRT_OVERSIZE(x) 0 -#endif - -#ifndef BIO_VMERGE_BOUNDARY -#define BIO_VMERGE_BOUNDARY 0 -#endif - -#define BIO_DEBUG - -#ifdef BIO_DEBUG -#define BIO_BUG_ON BUG_ON -#else -#define BIO_BUG_ON -#endif - -#define BIO_MAX_PAGES (256) -#define BIO_MAX_SIZE (BIO_MAX_PAGES << PAGE_CACHE_SHIFT) -#define BIO_MAX_SECTORS (BIO_MAX_SIZE >> 9) - -/* - * was unsigned short, but we might as well be ready for > 64kB I/O pages - */ -struct bio_vec { - struct page *bv_page; - unsigned int bv_len; - unsigned int bv_offset; -}; - -struct bio; -typedef int (bio_end_io_t) (struct bio *, unsigned int, int); -typedef void (bio_destructor_t) (struct bio *); - -/* - * main unit of I/O for the block layer and lower layers (ie drivers and - * stacking drivers) - */ -struct bio { - sector_t bi_sector; - struct bio *bi_next; /* request queue link */ - struct block_device *bi_bdev; - unsigned long bi_flags; /* status, command, etc */ - unsigned long bi_rw; /* bottom bits READ/WRITE, - * top bits priority - */ - - unsigned short bi_vcnt; /* how many bio_vec's */ - unsigned short bi_idx; /* current index into bvl_vec */ - - /* Number of segments in this BIO after - * physical address coalescing is performed. - */ - unsigned short bi_phys_segments; - - /* Number of segments after physical and DMA remapping - * hardware coalescing is performed. - */ - unsigned short bi_hw_segments; - - unsigned int bi_size; /* residual I/O count */ - - /* - * To keep track of the max hw size, we account for the - * sizes of the first and last virtually mergeable segments - * in this bio - */ - unsigned int bi_hw_front_size; - unsigned int bi_hw_back_size; - - unsigned int bi_max_vecs; /* max bvl_vecs we can hold */ - - struct bio_vec *bi_io_vec; /* the actual vec list */ - - bio_end_io_t *bi_end_io; - atomic_t bi_cnt; /* pin count */ - - void *bi_private; - - bio_destructor_t *bi_destructor; /* destructor */ -}; - -/* - * bio flags - */ -#define BIO_UPTODATE 0 /* ok after I/O completion */ -#define BIO_RW_BLOCK 1 /* RW_AHEAD set, and read/write would block */ -#define BIO_EOF 2 /* out-out-bounds error */ -#define BIO_SEG_VALID 3 /* nr_hw_seg valid */ -#define BIO_CLONED 4 /* doesn't own data */ -#define BIO_BOUNCED 5 /* bio is a bounce bio */ -#define BIO_USER_MAPPED 6 /* contains user pages */ -#define BIO_EOPNOTSUPP 7 /* not supported */ -#define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag))) - -/* - * top 4 bits of bio flags indicate the pool this bio came from - */ -#define BIO_POOL_BITS (4) -#define BIO_POOL_OFFSET (BITS_PER_LONG - BIO_POOL_BITS) -#define BIO_POOL_MASK (1UL << BIO_POOL_OFFSET) -#define BIO_POOL_IDX(bio) ((bio)->bi_flags >> BIO_POOL_OFFSET) - -/* - * bio bi_rw flags - * - * bit 0 -- read (not set) or write (set) - * bit 1 -- rw-ahead when set - * bit 2 -- barrier - * bit 3 -- fail fast, don't want low level driver retries - * bit 4 -- synchronous I/O hint: the block layer will unplug immediately - */ -#define BIO_RW 0 -#define BIO_RW_AHEAD 1 -#define BIO_RW_BARRIER 2 -#define BIO_RW_FAILFAST 3 -#define BIO_RW_SYNC 4 - -/* - * various member access, note that bio_data should of course not be used - * on highmem page vectors - */ -#define bio_iovec_idx(bio, idx) (&((bio)->bi_io_vec[(idx)])) -#define bio_iovec(bio) bio_iovec_idx((bio), (bio)->bi_idx) -#define bio_page(bio) bio_iovec((bio))->bv_page -#define bio_offset(bio) bio_iovec((bio))->bv_offset -#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx) -#define bio_sectors(bio) ((bio)->bi_size >> 9) -#define bio_cur_sectors(bio) (bio_iovec(bio)->bv_len >> 9) -#define bio_data(bio) (page_address(bio_page((bio))) + bio_offset((bio))) -#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER)) -#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC)) -#define bio_failfast(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST)) -#define bio_rw_ahead(bio) ((bio)->bi_rw & (1 << BIO_RW_AHEAD)) - -/* - * will die - */ -#define bio_to_phys(bio) (page_to_phys(bio_page((bio))) + (unsigned long) bio_offset((bio))) -#define bvec_to_phys(bv) (page_to_phys((bv)->bv_page) + (unsigned long) (bv)->bv_offset) - -/* - * queues that have highmem support enabled may still need to revert to - * PIO transfers occasionally and thus map high pages temporarily. For - * permanent PIO fall back, user is probably better off disabling highmem - * I/O completely on that queue (see ide-dma for example) - */ -#define __bio_kmap_atomic(bio, idx, kmtype) \ - (kmap_atomic(bio_iovec_idx((bio), (idx))->bv_page, kmtype) + \ - bio_iovec_idx((bio), (idx))->bv_offset) - -#define __bio_kunmap_atomic(addr, kmtype) kunmap_atomic(addr, kmtype) - -/* - * merge helpers etc - */ - -#define __BVEC_END(bio) bio_iovec_idx((bio), (bio)->bi_vcnt - 1) -#define __BVEC_START(bio) bio_iovec_idx((bio), (bio)->bi_idx) -/* Platforms may set this to restrict multi-page buffer merging. */ -#ifndef BIOVEC_PHYS_MERGEABLE -#define BIOVEC_PHYS_MERGEABLE(vec1, vec2) \ - ((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2))) -#endif -#define BIOVEC_VIRT_MERGEABLE(vec1, vec2) \ - ((((bvec_to_phys((vec1)) + (vec1)->bv_len) | bvec_to_phys((vec2))) & (BIO_VMERGE_BOUNDARY - 1)) == 0) -#define __BIO_SEG_BOUNDARY(addr1, addr2, mask) \ - (((addr1) | (mask)) == (((addr2) - 1) | (mask))) -#define BIOVEC_SEG_BOUNDARY(q, b1, b2) \ - __BIO_SEG_BOUNDARY(bvec_to_phys((b1)), bvec_to_phys((b2)) + (b2)->bv_len, (q)->seg_boundary_mask) -#define BIO_SEG_BOUNDARY(q, b1, b2) \ - BIOVEC_SEG_BOUNDARY((q), __BVEC_END((b1)), __BVEC_START((b2))) - -#define bio_io_error(bio, bytes) bio_endio((bio), (bytes), -EIO) - -/* - * drivers should not use the __ version unless they _really_ want to - * run through the entire bio and not just pending pieces - */ -#define __bio_for_each_segment(bvl, bio, i, start_idx) \ - for (bvl = bio_iovec_idx((bio), (start_idx)), i = (start_idx); \ - i < (bio)->bi_vcnt; \ - bvl++, i++) - -#define bio_for_each_segment(bvl, bio, i) \ - __bio_for_each_segment(bvl, bio, i, (bio)->bi_idx) - -/* - * get a reference to a bio, so it won't disappear. the intended use is - * something like: - * - * bio_get(bio); - * submit_bio(rw, bio); - * if (bio->bi_flags ...) - * do_something - * bio_put(bio); - * - * without the bio_get(), it could potentially complete I/O before submit_bio - * returns. and then bio would be freed memory when if (bio->bi_flags ...) - * runs - */ -#define bio_get(bio) atomic_inc(&(bio)->bi_cnt) - - -/* - * A bio_pair is used when we need to split a bio. - * This can only happen for a bio that refers to just one - * page of data, and in the unusual situation when the - * page crosses a chunk/device boundary - * - * The address of the master bio is stored in bio1.bi_private - * The address of the pool the pair was allocated from is stored - * in bio2.bi_private - */ -struct bio_pair { - struct bio bio1, bio2; - struct bio_vec bv1, bv2; - atomic_t cnt; - int error; -}; -extern struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, - int first_sectors); -extern mempool_t *bio_split_pool; -extern void bio_pair_release(struct bio_pair *dbio); - -extern struct bio *bio_alloc(int, int); -extern void bio_put(struct bio *); - -extern void bio_endio(struct bio *, unsigned int, int); -struct request_queue; -extern int bio_phys_segments(struct request_queue *, struct bio *); -extern int bio_hw_segments(struct request_queue *, struct bio *); - -extern void __bio_clone(struct bio *, struct bio *); -extern struct bio *bio_clone(struct bio *, int); - -extern void bio_init(struct bio *); - -extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); -extern int bio_get_nr_vecs(struct block_device *); -extern struct bio *bio_map_user(struct request_queue *, struct block_device *, - unsigned long, unsigned int, int); -extern void bio_unmap_user(struct bio *); -extern void bio_set_pages_dirty(struct bio *bio); -extern void bio_check_pages_dirty(struct bio *bio); -extern struct bio *bio_copy_user(struct request_queue *, unsigned long, unsigned int, int); -extern int bio_uncopy_user(struct bio *); - -#ifdef CONFIG_HIGHMEM -/* - * remember to add offset! and never ever reenable interrupts between a - * bvec_kmap_irq and bvec_kunmap_irq!! - * - * This function MUST be inlined - it plays with the CPU interrupt flags. - * Hence the `extern inline'. - */ -extern inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags) -{ - unsigned long addr; - - /* - * might not be a highmem page, but the preempt/irq count - * balancing is a lot nicer this way - */ - local_irq_save(*flags); - addr = (unsigned long) kmap_atomic(bvec->bv_page, KM_BIO_SRC_IRQ); - - BUG_ON(addr & ~PAGE_MASK); - - return (char *) addr + bvec->bv_offset; -} - -extern inline void bvec_kunmap_irq(char *buffer, unsigned long *flags) -{ - unsigned long ptr = (unsigned long) buffer & PAGE_MASK; - - kunmap_atomic((void *) ptr, KM_BIO_SRC_IRQ); - local_irq_restore(*flags); -} - -#else -#define bvec_kmap_irq(bvec, flags) (page_address((bvec)->bv_page) + (bvec)->bv_offset) -#define bvec_kunmap_irq(buf, flags) do { *(flags) = 0; } while (0) -#endif - -extern inline char *__bio_kmap_irq(struct bio *bio, unsigned short idx, - unsigned long *flags) -{ - return bvec_kmap_irq(bio_iovec_idx(bio, idx), flags); -} -#define __bio_kunmap_irq(buf, flags) bvec_kunmap_irq(buf, flags) - -#define bio_kmap_irq(bio, flags) \ - __bio_kmap_irq((bio), (bio)->bi_idx, (flags)) -#define bio_kunmap_irq(buf,flags) __bio_kunmap_irq(buf, flags) - -#endif /* __LINUX_BIO_H */ -- 2.30.2